周记(一)

使用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提供的对数据库操做的集成完善的模型。咱们不须要深刻理解,调用便可。

整个框架的大致功能就是如此实现的。咱们只须要简单的添加修改删除一部分代码便可实现功能的添加修改删除。

相关文章
相关标签/搜索