首页 > 技术文章 > 周记(一)

transWang 2017-10-30 10:09 原文

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


Beego框架基于go语言,有并发量高和安全性高等特点。Swagger是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。结合Swagger和Beego可以快速的开发搭建自己想要的服务器。

下面是完善且高效的框架文档,按部就班即可快速的搭建服务器

Beego自动化文档(最新版)

如果想要深入的了解或者学习Beego框架的运行方式和数据库操作,下面有官方文档可以提供学习(提前是需要学习go语言的基础语法)

Beego官方文档

如果觉得从头开始学习Beego框架有些繁琐,我会在下面简单介绍一下Beego和Swagger结合的运行原理。(本人才疏学浅,不到之处不吝赐教,有问题或者疑问可以留言)

下面是我个人的项目目录,经供参考。

commentsRouter_controllers.go文件是RESTful样式的路由,如果修改功能,不能忘记。

下面是具体的请求跳转过程。

    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请求为例

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提供的对数据库操作的集成完善的模型。我们不需要深入理解,调用即可。

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

推荐阅读