週記(一)

使用Beego框架和Swagger工具搭建API可視化服務器


Beego框架基於go語言,有併發量高和安全性高等特色。Swagger是一款RESTFUL接口的文檔在線自動生成+功能測試功能軟件。結合Swagger和Beego能夠快速的開發搭建本身想要的服務器。數據庫

下面是完善且高效的框架文檔,循序漸進便可快速的搭建服務器json

Beego自動化文檔(最新版)

若是想要深刻的瞭解或者學習Beego框架的運行方式和數據庫操做,下面有官方文檔能夠提供學習(提早是須要學習go語言的基礎語法)api

Beego官方文檔

若是以爲從頭開始學習Beego框架有些繁瑣,我會在下面簡單介紹一下Beego和Swagger結合的運行原理。(本人才疏學淺,不到之處不吝賜教,有問題或者疑問能夠留言)安全

下面是我我的的項目目錄,經供參考。
服務器

commentsRouter_controllers.go文件是RESTful樣式的路由,若是修改功能,不能忘記。併發

下面是具體的請求跳轉過程。app

ns := beego.NewNamespace("/v1",

        beego.NSNamespace("/dockingwork_device_service",
            beego.NSInclude(
                &controllers.DockingworkDeviceServiceController{},
            ),
        ),
    )

上述代碼是對路徑的一個解析,當咱們請求/v1/dockingwork_device_service時,會識別controllers包下的結構體DockingworkDeviceServiceController,並根據請求方式調用不一樣的方法框架

func (c *DockingworkDeviceServiceController) URLMapping() {
    c.Mapping("Post", c.Post)
    c.Mapping("GetOne", c.GetOne)
    c.Mapping("GetAll", c.GetAll)
    c.Mapping("Put", c.Put)
    c.Mapping("Delete", c.Delete)
}

Swagger框架會自動提供基礎方法,也會實現具體功能,調用請求方式對應的方法。工具

這裏以post請求爲例post

func (c *DockingworkDeviceServiceController) Post() {
    var v models.DockingworkDeviceService
    if err := json.Unmarshal(c.Ctx.Input.RequestBody, &v); err == nil {
        if _, err := models.AddDockingworkDeviceService(&v); err == nil {
            c.Ctx.Output.SetStatus(201)
            c.Data["json"] = v
        } else {
            c.Data["json"] = err.Error()
        }
    } else {
        c.Data["json"] = err.Error()
    }
    c.ServeJSON()
}

其中c.Ctx.Input.RequestBody將獲取到請求中的數據,json.Unmarshal方法將數據轉換爲json類型並保存到v裏。models.AddDockingworkDeviceService(&v)方法是對數據庫的操做。會調用到models裏的方法。將在下面作出解釋。

model是數據模型,對應數據庫中的數據類型,咱們使用model操做數據庫。

func AddDockingworkDeviceService(m *DockingworkDeviceService) (id int64, err error) {
    o := orm.NewOrm()
    id, err = o.Insert(m)
    return
}

這段代碼是添加新數據到數據庫。是上面post請求方法中調用的核心功能。orm的操做是beego提供的對數據庫操做的集成完善的模型。咱們不須要深刻理解,調用便可。

整個框架的大致功能就是如此實現的。咱們只須要簡單的添加修改刪除一部分代碼便可實現功能的添加修改刪除。

相關文章
相關標籤/搜索