Ponzu是一个强大开源的HTTP服务框架和CMS系统,采用Go语言开发。提供了后台管理系统,可以通过命令快速生成可后台编辑(CURD)的自定义内容类型(原文content),并可以通过配置使自定义内容类型支持Restful访问,提供了支持TLS、可后台配置的HTTP/2服务。个人认为Ponzu目前存在很多缺陷,不适合在实际项目中使用,例如多语言支持,内容类型关联等,API不够全面等,期待后续可以不断增强。
接下来会通过通过简单的教程来解释Ponzu的使用方法并通过Ponzu一步步构建一个简单的具有后台管理系统的Restful服务Demo,具体功能为Github热门开源项目分享,此文章仅介绍服务器端,客户端DEMO可关注Futter APP开发初体验——Github热门项目分享
下面介绍下Ponzu的基础知识
创建新的Ponzu项目
- 需要安装 Go 1.8+
- 配置一个GOPATH 例如
~/GoglandProjects/ponzudemo
- 安装Ponzu命令行工具及其依赖
//注意结尾是3个英文句号表示同时安装项目的依赖,官网Quickstart是有问题的
go get github.com/ponzu-cms/ponzu/...
- 在当前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服务。
内容类型管理列表
内容类型编辑
添加内容类型
生成内容类型
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 | 文件上传 |
hidden | type=”hiden”的普通输入框 |
richtext | 富文本输入框 |
select | 下拉选择 |
textarea | 多行文本 |
tags | 标签输入 |
text/input
file(表单提交前)
file(表单提交后)
richtext
select
textarea
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字段与内容类型相关联。
添加作者
添加图书时选择作者
下面开始完成我们的demo——Github热门开源项目分享
内容类型(contents)字段表
- category (分类) 字段表
名称 | 描述 | 对应数据结构 | 输入控件 |
---|---|---|---|
name | 分类名称 | string | input |
- project (项目) 字段表
名称 | 描述 | 对应数据结构 | 输入控件 |
---|---|---|---|
title | 标题 | string | input |
description | 描述 | string | richtext |
url | Github地址 | string | input |
thumbnails | 缩略图 | string | file |
category | 分类 | string | select |
tags | 标签 | []string | tags |
开始创建内容类型
- 进入刚才创建的Ponzu项目目录
cd $GOPATH/src/github.com/shawpo/ponzudemo
- 创建”category”
ponzu generate content category name:"string"
- 创建”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 后会进入下图所示的初始化设置界面,按需要填写即可。
初始化设置
当前效果
当前效果