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

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服务_第1张图片
内容类型管理列表

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

Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务_第3张图片
添加内容类型
生成内容类型

ponzu支持使用ponzu generate content命令生成content并生成其对应的多个字段,具体格式为ponzu generate content contentName [{fieldName:fieldType:inputView}...],其中contentName为该内容类型的名称,fieldName表示字段的名称,fieldType表示字段的数据类型,inputView表示字段在ponzu后台管理系统中的表单输入控件类型(默认为input,可留空)。例如ponzu generate content review title:"string" body:"string":richtext rating:"int"表示生成一个名为review的content ,其拥有title, body, rating3个字段,对应的数据类型分别为string, string, int, 输入控件类型分别为input, richtext, input。看到这里,你可能对fieldType与inputView有着很大的疑问,比如richtext是什么鬼,下面就来详细介绍下。

  • 首先介绍下inputView,下面列出了ponzu后台管理系统中的表单输入控件(inputView)类型并进行了描述。
控件类型 描述
input, text 普通输入框
file 文件上传
hidden type="hiden"的普通输入框
richtext 富文本输入框
select 下拉选择
textarea 多行文本
tags 标签输入
text/input

file(表单提交前)

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

Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务_第5张图片
richtext

Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务_第6张图片
select

Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务_第7张图片
textarea

Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务_第8张图片
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服务_第9张图片
添加作者

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

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

内容类型(contents)字段表
  1. category (分类) 字段表
名称 描述 对应数据结构 输入控件
name 分类名称 string input
  1. project (项目) 字段表
名称 描述 对应数据结构 输入控件
title 标题 string input
description 描述 string richtext
url Github地址 string input
thumbnails 缩略图 string file
category 分类 string select
tags 标签 []string tags
开始创建内容类型
  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服务_第11张图片
初始化设置
当前效果
Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务_第12张图片
当前效果
对生成的代码进行编辑以提供Restful服务

你可能感兴趣的:(Golang 开源CMS Ponzu使用教程——快速构建简单的具有后台管理系统的Restful服务)