因為beego的更新,一些使用自動化文檔的方法也有了更新,請參考:http://www.lxweimin.com/p/0dc261bc5cea
beego是什么?
beego
是一個快速開發go應用的http框架,go 語言
技術大牛ASTA謝的開源項目。
beego
可以用來快速開發API、Web以及后端服務等各種應用,是一個RESTFul
的框架,主要設計靈感來源于tornado
、sinatra
、flask
這三個框架,結合了Go本身的一些特性(interface
、struct
繼承等)而設計的。
beego
結合swagger
就能實現自動化的文檔。
Swagger是什么?
Swagger
是一個規范和一套完整的框架,用于生成
、描述
、調用
以及可視化
RESTful 風格的 Web 服務。
Swagger
的總體目標是使客戶端和文件系統服務器以同樣的速度來更新,方法,參數和模型
緊密集成到服務器端的代碼中,允許API
始終保持同步。
Swagger
讓部署管理和使用API從未如此簡單。
自動文檔的好處?
1. 不用手動寫文檔了,通過注解就可以自動化文檔
2. 文檔和代碼同步更新,代碼更新之后不需要再更新文檔
3. 瀏覽器友好
4. 使用Swagger框架可以調試API,在瀏覽器端可以看到更多的`request`和`response`信息
使用指南
首先安裝go:http://www.lxweimin.com/p/943870134593
可以使用intelliJ
作為go的IDE:http://www.lxweimin.com/p/943870134593
也可以使用Atom
作用go的IDE:http://www.lxweimin.com/p/c1d8cf274ec7
安裝beego:http://beego.me/quickstart
使用go get
安裝beego:
go get github.com/astaxie/beego
安裝bee工具:
go get github.com/beego/bee
未了方面可以把$GOPATH/bin
加入到你的$PATH
變量中:
export PATH=$PATH:$GOPATH/bin
創建一個beego項目
使用bee
工具可以方便的創建,管理,運行,打包beego
項目:
bee api beeapi
必須在$GOPATH/src
的目錄下創建項目。
為該項目指定Swagger
目錄:
beego.StaticDir["/swagger"] = "swagger"
下載Swagger
:https://github.com/beego/swagger
也可以下載最新的Swagger
:http://swagger.io/
放到項目的根目錄
下面,目錄名稱為swagger
,和上面的配置一致。
路由解析
目前自動化文檔的路由規則只支持NewNamespace
寫法的解析,其他寫法函數不會自動解析為文章,就是namespace+Include
的寫法。而且只支持二級解析,其中一級表示版本號,二級表示應用模塊。
如:
ns := beego.NewNamespace("/v1",
beego.NSNamespace("/object",
beego.NSInclude(
&controllers.ObjectController{},
),
),
beego.NSNamespace("/user",
beego.NSInclude(
&controllers.UserController{},
),
),
)
beego.AddNamespace(ns)
生成文檔
在配置文件conf/app.conf
中設置
EnableDocs = true
生成docs
文件:
bee generate docs
文檔的生成在 docs
文件的init函數
中調用的,因此必須在main中導入docs
文件,這樣就會調用docs的init函數
_ "beeapi/docs"
運行程序:
bee run watchall true
bee run
命令是監控beego的項目文件,通過fsnotify
監控文件系統,這樣在開發的過程中可以實時的看到項目修改之后的效果。
打開http://127.0.0.1:8080/swagger/就可以看到自動化文檔的界面
也可以運行下面命令改變docs的端口號:
bee run docs -docport=8888
注解
beego
的文檔注解包括兩種:全局注解和應用注解.
全局注釋
,必須放在router.go
的最頂部,包括:
@APIVersion
@Title
@Description
@Contact
@TermsOfServiceUrl
@License
@LicenseUrl
應用注釋,需要放在對應方法的上面,包括:
@title
@Description
@Param
@Success
@Failure
@router