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服务。

内容类型管理列表

内容类型编辑

添加内容类型
生成内容类型

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(表单提交前)

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)字段表
  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 后会进入下图所示的初始化设置界面,按需要填写即可。

初始化设置
当前效果
当前效果
对生成的代码进行编辑以提供Restful服务
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,924评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,902评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,716评论 0 239
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,783评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,166评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,510评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,784评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,476评论 0 196
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,196评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,459评论 2 243
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,978评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,321评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,964评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,046评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,803评论 0 193
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,530评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,420评论 2 265

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,097评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,561评论 25 707
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,334评论 0 15
  • # 一度蜜v3.0协议 --- # 交互协议 [TOC] ## 协议说明 ### 请求参数 下表列出了v3.0版协...
    c5e350bc5b40阅读 620评论 0 0
  • 少小离家老大回, 孑然一身汗颜归。 打拼本为生活累, 怎奈徒把青春费。 ​​​
    三湘涟漪阅读 348评论 13 14