1. 程式人生 > >golang(5)使用beego 開發 api server 和前端同學拆分開發,使用swagger

golang(5)使用beego 開發 api server 和前端同學拆分開發,使用swagger

1,beego api

Swagger 是一個規範和完整的框架,用於生成、描述、呼叫和視覺化 RESTful 風格的 Web 服務。總體目標是使客戶端和檔案系統作為伺服器以同樣的速度來更新。
專案地址是:http://swagger.io/
使用 beego 開發自帶集成了 swagger的東西。
https://beego.me/docs/advantage/docs.md
github 地址:
https://github.com/beego/swagger
beego 使用最新的版本:1.8.0

2,非常的方便

建立一個專案:apiserver

bee api apiserver
cd apiserver/
bee run -gendoc=true -downdoc=true

會自動下載最新的 swagger 壓縮檔案:

2017/04/06 20:52:08 INFO     ▶ 0001 Using 'apiserver' as 'appname'
2017/04/06 20:52:08 INFO     ▶ 0002 Loading default configuration...
2017/04/06 20:52:08 INFO     ▶ 0003 Downloading 'https://github.com/beego/swagger/archive/v2.zip' to 'swagger.zip'...
2017/04/06 20:52:21 SUCCESS  ▶ 0004
800610 bytes downloaded!

非常花裡胡哨的介面了,紅的綠的黃的紫的。

3,程式碼裡面可亂了

配置檔案增加了

EnableDocs = true

其中 commentsRouter_controllers.go 這個檔案會根據 controller 裡面的內容自動生成。
而在 router 裡面配置了 NameSpace。通用的配置了下版本的資訊。

可以在頁面當中直接提交測試資料的json

可以在頁面當中直接進行查詢。
和之前官方的文件不太一樣。因為版本升級了。

4,一個表單提交

研究了下注釋:

// @Description 建立使用者
//
@Param Username formData string "zhangsan" true "使用者名稱" // @Param Password formData string "123456" true "密碼" // @Success 200 {int} models.User.Id models.User.Username models.User // @Failure 403 body is empty // @router /addUser [post] func (u *UserController) Post() {
  1. 引數名
  2. 引數型別,可以有的值是 formData、query、path、body、header,formData 表示是 post請求的資料,query 表示帶在 url 之後的引數,path 表示請求路徑上得引數,例如上面例子裡面的 key,body 表示是一個
    raw 資料請求,header 表示帶在 header 資訊中得引數。
  3. 引數型別
  4. 預設值
  5. 是否必須
  6. 註釋

生成的介面是:

可以傳送引數請求了,並且可以將cookie帶入。
但是偽造cookie 就不行了。
可以考慮使用header當中存放 Token 引數保持使用者登入。
然後在請求的是都放入進去,寫死一個Token 保持使用者登入。
方便前端同學進行除錯開發。

4,總結

beego 已經支援 swagger,開發一個前後端專案分離的專案最方便了。
同時可以要求把cookie 種到cookie 當中,然後使用子域名,進行跨域訪問。
在beego 中開啟跨域訪問。
也可以儲存 Token ,然後放到header頭中傳遞使用者登入。
同時為了方便測試,可以寫入幾個預設值寫死一直登入。
方便測試藉口。
可以把這個swagger 當成一個 PostMan的集合,直接進行測試除錯。
非常符合專案拆分開發。非常的方便。