Ponzu是一個強大開源的HTTP服務(wù)框架和CMS系統(tǒng),采用Go語言開發(fā)。提供了后臺管理系統(tǒng),可以通過命令快速生成可后臺編輯(CURD)的自定義內(nèi)容類型(原文content),并可以通過配置使自定義內(nèi)容類型支持Restful訪問,提供了支持TLS、可后臺配置的HTTP/2服務(wù)。個人認為Ponzu目前存在很多缺陷,不適合在實際項目中使用,例如多語言支持,內(nèi)容類型關(guān)聯(lián)等,API不夠全面等,期待后續(xù)可以不斷增強。
接下來會通過通過簡單的教程來解釋Ponzu的使用方法并通過Ponzu一步步構(gòu)建一個簡單的具有后臺管理系統(tǒng)的Restful服務(wù)Demo,具體功能為Github熱門開源項目分享,此文章僅介紹服務(wù)器端,客戶端DEMO可關(guān)注Futter APP開發(fā)初體驗——Github熱門項目分享
下面介紹下Ponzu的基礎(chǔ)知識
創(chuàng)建新的Ponzu項目
- 需要安裝 Go 1.8+
- 配置一個GOPATH 例如
~/GoglandProjects/ponzudemo
- 安裝Ponzu命令行工具及其依賴
//注意結(jié)尾是3個英文句號表示同時安裝項目的依賴,官網(wǎng)Quickstart是有問題的
go get github.com/ponzu-cms/ponzu/...
- 在當前GOPATH下的src/github.com/shawpo/ponzudemo目錄中創(chuàng)建一個Ponzu項目。需要注意的是'ponzu'可執(zhí)行文件位于當前GOPATH下的bin目錄中(go get生成),若沒有將$GOPATH/bin加入PATH環(huán)境變量中,請進入其所在目錄使用'ponzu'命令。
ponzu new github.com/shawpo/ponzudemo
Ponzu內(nèi)容類型(content)
Ponzu通過創(chuàng)建content來為CMS添加"內(nèi)容",Ponzu后臺管理系統(tǒng)會為每個content提供管理操作支持,并支持通過實現(xiàn)相應(yīng)方法以提供Restful服務(wù)。
內(nèi)容類型管理列表
內(nèi)容類型編輯
添加內(nèi)容類型
生成內(nèi)容類型
ponzu支持使用ponzu generate content
命令生成content并生成其對應(yīng)的多個字段,具體格式為ponzu generate content contentName [{fieldName:fieldType:inputView}...]
,其中contentName為該內(nèi)容類型的名稱,fieldName表示字段的名稱,fieldType表示字段的數(shù)據(jù)類型,inputView表示字段在ponzu后臺管理系統(tǒng)中的表單輸入控件類型(默認為input,可留空)。例如ponzu generate content review title:"string" body:"string":richtext rating:"int"
表示生成一個名為review的content ,其擁有title, body, rating3個字段,對應(yīng)的數(shù)據(jù)類型分別為string, string, int, 輸入控件類型分別為input, richtext, input。看到這里,你可能對fieldType與inputView有著很大的疑問,比如richtext是什么鬼,下面就來詳細介紹下。
- 首先介紹下inputView,下面列出了ponzu后臺管理系統(tǒng)中的表單輸入控件(inputView)類型并進行了描述。
控件類型 | 描述 |
---|---|
input, text | 普通輸入框 |
file | 文件上傳 |
hidden | type="hiden"的普通輸入框 |
richtext | 富文本輸入框 |
select | 下拉選擇 |
textarea | 多行文本 |
tags | 標簽輸入 |
text/input
file(表單提交前)
file(表單提交后)
richtext
select
textarea
tags
- fieldType可理解為該字段的存儲類型,例如:上傳文件的數(shù)據(jù)類型為string,因為數(shù)據(jù)中存儲的是該文件的路徑;標簽的數(shù)據(jù)類型為[]string,因為標簽應(yīng)當是有多個值的。
內(nèi)容類型關(guān)聯(lián)
內(nèi)容類型之間大多存在著關(guān)聯(lián),Ponzu支持在創(chuàng)建內(nèi)容類型時設(shè)置其關(guān)聯(lián)內(nèi)容類型
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
以上命令創(chuàng)建了author和book兩種內(nèi)容類型(gen c為enerate content的簡寫),并在創(chuàng)建book時使用author:@author將book的author字段與內(nèi)容類型相關(guān)聯(lián)。
添加作者
添加圖書時選擇作者
下面開始完成我們的demo——Github熱門開源項目分享
內(nèi)容類型(contents)字段表
- category (分類) 字段表
名稱 | 描述 | 對應(yīng)數(shù)據(jù)結(jié)構(gòu) | 輸入控件 |
---|---|---|---|
name | 分類名稱 | string | input |
- project (項目) 字段表
名稱 | 描述 | 對應(yīng)數(shù)據(jù)結(jié)構(gòu) | 輸入控件 |
---|---|---|---|
title | 標題 | string | input |
description | 描述 | string | richtext |
url | Github地址 | string | input |
thumbnails | 縮略圖 | string | file |
category | 分類 | string | select |
tags | 標簽 | []string | tags |
開始創(chuàng)建內(nèi)容類型
- 進入剛才創(chuàng)建的Ponzu項目目錄
cd $GOPATH/src/github.com/shawpo/ponzudemo
- 創(chuàng)建"category"
ponzu generate content category name:"string"
- 創(chuàng)建"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
初始化設(shè)置
按提示訪問 http://localhost:8080/admin 后會進入下圖所示的初始化設(shè)置界面,按需要填寫即可。
初始化設(shè)置
當前效果
當前效果