Ponzu是一个强大开源的HTTP服务框架和CMS系统,采用Go语言开发。提供了后台管理系统,可以通过命令快速生成可后台编辑(CURD)的自定义内容类型(原文content),并可以通过配置使自定义内容类型支持Restful访问,提供了支持TLS、可后台配置的HTTP/2服务。个人认为Ponzu目前存在很多缺陷,不适合在实际项目中使用,例如多语言支持,内容类型关联等,API不够全面等,期待后续可以不断增强。
接下来会通过通过简单的教程来解释Ponzu的使用方法并通过Ponzu一步步构建一个简单的具有后台管理系统的Restful服务Demo,具体功能为Github热门开源项目分享,此文章仅介绍服务器端,客户端DEMO可关注Futter APP开发初体验——Github热门项目分享

下面介绍下Ponzu的基础知识

创建新的Ponzu项目
  1. 需要安装 Go 1.8+
  2. 配置一个GOPATH 例如
~/GoglandProjects/ponzudemo
  1. 安装Ponzu命令行工具及其依赖
//注意结尾是3个英文句号表示同时安装项目的依赖,官网Quickstart是有问题的
go get github.com/ponzu-cms/ponzu/...
  1. 在当前GOPATH下的src/github.com/shawpo/ponzudemo目录中创建一个Ponzu项目。需要注意的是’ponzu’可执行文件位于当前GOPATH下的bin目录中(go get生成),若没有将$GOPATH/bin加入PATH环境变量中,请进入其所在目录使用’ponzu’命令。
ponzu new github.com/shawpo/ponzudemo
Ponzu内容类型(content)

Ponzu通过创建content来为CMS添加”内容”,Ponzu后台管理系统会为每个content提供管理操作支持,并支持通过实现相应方法以提供Restful服务。

《Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务》 内容类型管理列表

《Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务》 内容类型编辑

《Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务》 添加内容类型

生成内容类型
ponzu generate contentponzu generate content contentName [{fieldName:fieldType:inputView}...]ponzu generate content review title:"string" body:"string":richtext rating:"int"
  • 首先介绍下inputView,下面列出了ponzu后台管理系统中的表单输入控件(inputView)类型并进行了描述。
控件类型描述
input, text普通输入框
file文件上传
hiddentype=”hiden”的普通输入框
richtext富文本输入框
select下拉选择
textarea多行文本
tags标签输入

《Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务》 text/input

《Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务》 file(表单提交前)

《Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务》 file(表单提交后)

《Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务》 richtext

《Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务》 select

《Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务》 textarea

《Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务》 tags

  • fieldType可理解为该字段的存储类型,例如:上传文件的数据类型为string,因为数据中存储的是该文件的路径;标签的数据类型为[]string,因为标签应当是有多个值的。
内容类型关联

内容类型之间大多存在着关联,Ponzu支持在创建内容类型时设置其关联内容类型

ponzu gen c author name:string photo:string:file bio:string:textarea
ponzu gen c book title:string author:@author,name pages:int year:int

以上命令创建了author和book两种内容类型(gen c为enerate content的简写),并在创建book时使用author:@author将book的author字段与内容类型相关联。

《Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务》 添加作者

《Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务》 添加图书时选择作者

下面开始完成我们的demo——Github热门开源项目分享

内容类型(contents)字段表
  1. category (分类) 字段表
名称描述对应数据结构输入控件
name分类名称stringinput
  1. project (项目) 字段表
名称描述对应数据结构输入控件
title标题stringinput
description描述stringrichtext
urlGithub地址stringinput
thumbnails缩略图stringfile
category分类stringselect
tags标签[]stringtags
开始创建内容类型
  1. 进入刚才创建的Ponzu项目目录
cd $GOPATH/src/github.com/shawpo/ponzudemo
  1. 创建”category”
ponzu generate content category name:"string"
  1. 创建”project”
ponzu generate content project title:"string" description:"string":richtext url:"string" thumbnails:"string":file category:@category,name tags:[]string:tags
编译运行
// 按默认方式编译安装
ponzu build
ponzu run
初始化设置

按提示访问 http://localhost:8080/admin 后会进入下图所示的初始化设置界面,按需要填写即可。

《Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务》 初始化设置

当前效果

《Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务》 当前效果

对生成的代码进行编辑以提供Restful服务