beego介绍

beego是一个Golang实现的开源Go应用开发框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful的框架,主要设计灵感来源于tornado、sinatra和flask这三个框架,但是结合了Go本身的一些特性(interface、struct 嵌入等)而设计的一个框架。

Beego Framework:

一个使用 Go 的思维来帮助您构建并开发 Go 应用程序的开源框架

beego简介

beego安装, bee命令

安装beego

#go get github.com/astaxie/beego

安装bee工具,bee工具是一个为了协助快速开发beego项目而创建的项目,可以通过bee快速创建项目、实现热编译、开发测试以及开发完之后打包发布的一整套从创建、开发到部署的方案。

#go get github.com/beego/bee

bee命令默认安装在$GOPATH/bin下,把这个路径添加到PATH中。

实践中主要用到bee的三个子命令:api,run,pack。

api命令用来创建api应用,生成默认beego api应用框架。

# bee api snmpcheck

# tree snmpcheck/

snmpcheck/

├── conf

│   └── app.conf

├── controllers

│   ├── object.go

│   └── user.go

├── docs

│   └── doc.go

├── main.go

├── models

│   ├── object.go

│   └── user.go

├── routers

│   └── router.go

└── tests

└── default_test.go

其中,routers/router.go是路由的相关配置,controllers目录下存放各个api路由下相关的控制器。

run命令用来编译运行beego工程,并通过fsnotify监控源码的改动,实现热编译,开发过程中就可以实时的看到项目修改之后的效果。

# bee run

bee :1.4.1

beego :1.6.1

Go :go version go1.5.1 linux/amd64

[INFO] Uses 'snmpcheck' as 'appname'

[INFO] Initializing watcher...

[TRAC] Directory(/home/lab/src/snmpcheck/controllers)

[TRAC] Directory(/home/lab/src/snmpcheck)

[TRAC] Directory(/home/lab/src/snmpcheck/models)

[TRAC] Directory(/home/lab/src/snmpcheck/routers)

[TRAC] Directory(/home/lab/src/snmpcheck/tests)

[INFO] Start building...

[SUCC] Build was successful

[INFO] Restarting snmpcheck ...

[INFO] ./snmpcheck is running...

[parser.go:61][I] /home/lab/src/snmpcheck/controllers no changed

[parser.go:61][I] /home/lab/src/snmpcheck/controllers no changed

[asm_amd64.s:1696][I] http server Running on :7070

pack命令用来发布应用的时候打包。

# bee pack

app path: /home/lab/src/snmpcheck

build snmpcheck

GOOS linux GOARCH amd64

build success

exclude relpath prefix: .

exclude relpath suffix: .go:.DS_Store:.tmp

file write to `/home/lab/src/snmpcheck/snmpcheck.tar.gz`

打包完的tar包中有应用的可执行文件和配置文件,部署时直接上传这个tar包即可。

# tar -tf snmpcheck.tar.gz

snmpcheck

conf/app.conf

restful路由

beego的路由设置比较灵活,包括固定路由,正则匹配路由,以及通过go反射机制实现的自动路由(可能会导致性能损耗,不推荐使用这种路由设置方式)和注解路由。

实践中使用比较方便的注解路由方式。注解路由的使用:

首先在router中用namespace方式注册控制器。这里在/v1/user下,导入UserController控制器。

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

...

beego.NSNamespace("/user",

beego.NSInclude(

&controllers.UserController{},

),

),

...

)

beego.AddNamespace(ns)

在控制器中对应方法上用注解方式注册路由。

// @Title logout

// @Description Logs out current logged in user session

// @Success 200 {string} logout success

// @router /logout [get]

func (u *UserController) Logout() {

u.Data["json"] = "logout success"

u.ServeJSON()

}

注解路由使用关键字***@router***。

这里"@router /logout [get]"注册了"Get /v1/user/logout -> UserController.Logout()"这样的路由。

如果beego运行在dev模式(可以在conf中配置),routers目录下会生成路由经过解析后的结果commentsRouter.go,调试时可以作为参考。

进程内监控

beego提供了应用信息的监控和展示,可以查看实时信息比如qps,健康状况,程序性能相关(goroutine,gc,cpu等),可以查看静态信息比如路由配置,conf配置信息,过滤器信息,还可以查看和触发任务。

进程监控默认是关闭的,可以通过简单的配置中打开,很方便:

EnableAdmin = true

AdminHttpAddr = 0.0.0.0 #默认监听地址是localhost

AdminHttpPort = 8088

这样,应用启动后,会在8088端口提供监控展示服务。

自动化文档

beego通过swagger和内部的注释解析能够实现自动文档的效果,使用方法:

routers/router.go中路由只能使用namespace+Include的写法,而且只支持二级解析,一级版本号,二级分别表示应用模块。

routers/router.go文件中设置全局的应用信息。注意,必须写在文件顶部。

注释的格式(每个字段的含义可以参照Auto Docs):

// @Title login

// @Description Logs user into the system

// @Param username query string true "The username for login"

// @Param password query string true "The password for login"

// @Success 200 {string} login success

// @Failure 403 user not exist

// @router /login [get]

func (u *UserController) Login() {

username := u.GetString("username")

password := u.GetString("password")

if models.Login(username, password) {

u.Data["json"] = "login success"

} else {

u.Data["json"] = "user not exist"

}

u.ServeJSON()

}

在配置文件中打开自动文档配置:

EnableDocs = true

启动时添加自动文档参数:

bee run -gendoc=true

满足以上配置,beego会自动解析控制器中的注释,启动swagger服务,并在/docs接口上提供已生成好的json字串。

访问swagger服务并在swagger中访问/docs接口,即可看到接口的文档,同时也可以对接口进行测试。

有疑问加站长微信联系(非本文作者)

beego api mysql_beego搭建api服务相关推荐

  1. spring cloud+.net core搭建微服务架构:Api授权认证(六)

    前言 这篇文章拖太久了,因为最近实在太忙了,加上这篇文章也非常长,所以花了不少时间,给大家说句抱歉.好,进入正题.目前的项目基本都是前后端分离了,前端分Web,Ios,Android...,后端也基本 ...

  2. spring cloud+dotnet core搭建微服务架构:Api网关(三)

    前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...

  3. django restful mysql_如何用Django和restful搭建api接口服务

    因为在一个项目需要接口服务.通过接口url可以实现写入和读取等功能. django 搭建web服务 1)新建一个 django project django-admin.py startproject ...

  4. 普歌-腾讯云短信+使用node发送短信(3种方法API、SDK)、封装工具、搭建web服务、写接口、调用接口发送短信、时效性判断、验证验证码的正确性(下)

    普歌-结合腾讯云短信服务+node搭建一个简单的发送短信web小项目 涉及技术: 腾讯云服务 后端服务:node+express 前端搭建:html+js 前言:本来这篇博客应该很早就发了,中间有一些 ...

  5. Flask搭建api服务-生成API文档

    前面讲到了Flask实现api,但api是给别人用的,就要告诉别人如何发现api,以及api的用途.名称.出参.入参,生成api文档的做法有好多种,本文选了一种最简单的方式. 核心就是通过app.vi ...

  6. 新课推荐 | 用 Django 快速搭建 API 测试工具

    API,即:应用编程接口(Application Programming Interface),就是软件系统不同组成部分衔接的约定. 由于近年来软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部 ...

  7. 【24-业务开发-基础业务-品牌管理-图片管理-阿里云OSS服务开通和使用-阿里云OSS服务API使用-SpringCloudAlibaba OSS服务的使用】

    一.知识回顾 [0.三高商城系统的专题专栏都帮你整理好了,请点击这里!] [1-系统架构演进过程] [2-微服务系统架构需求] [3-高性能.高并发.高可用的三高商城系统项目介绍] [4-Linux云 ...

  8. 万字长文解析:分布式架构、SOA、微服务架构、API网关、ESB服务总线架构之间的关联及演进

    1架构演进 架构十五年:改变的是形态,不变的是目的 业务驱动架构形态变化 过去十几年,随着互联网发展以及业务的多样化,系统的架构也在不断发生变化,总体上来说大体经历了从单体应用架构-垂直应用架构-分布 ...

  9. 这个项目真香,快速搭建API接口商城,最快当天上线,还有源代码

    API接口商城有什么用? API接口商城通过提供API接口服务或数据服务,向开发者或客户收取服务费用,平台销售的不是接口源代码,而是接口调用的次数和数据这些无形资产. 常用的高频API接口有:短信接口 ...

最新文章

  1. 用ajax更新div,如何使用ajax和jquery更新特定的div
  2. 18-Chain of trust bindings
  3. 收留我接入云信,打造陌生人旅行社交
  4. The import com.google cannot be resolved解决方法
  5. java由大到小输出整数xvz_【视频+图文】Java经典基础练习题(三):输入3个整数,并将其由小到大输出...
  6. Linux各个目录的作用及内容
  7. Mr.J-- jQuery学习笔记(二十四)--剖析jQuery源码--extend
  8. 链式编程和函数式编程
  9. CSS3 盒尺寸 box-sizing属性
  10. KG—ARM-Thumb子程序调用规则—ATPCS
  11. bzoj5138 [Usaco2017 Dec]Push a Box
  12. animation和keyframes
  13. supervise用法_supervise过去式和用法例句
  14. 微信 打开html文件,微信文件在电脑上打开文件
  15. 权变理论计算机管理理论,权变理论视角的教育管理研究
  16. 某微型计算机指令格式如图,计算机组成原理期末复习试题2套不含答案
  17. vivo7.0系统手机最完美激活Xposed框架的教程
  18. php数组函数array flip,PHP array_flip() 函数
  19. Linux 系统检测和加固脚本
  20. Mentor Graphics LP Wizard 软件使用----创建零件BGA封装库

热门文章

  1. 记录一下有关ChArUco标定板
  2. class不生效 weblogic_weblogic下更改jsp不生效的解决办法
  3. [Dynamic Language] Python3.7 源码安装 ModuleNotFoundError: No module named '_ctypes' 解决记录...
  4. 设置共享,实现Linux和Windows之间的共享
  5. Android数据存储之SD卡
  6. ASP.NET Web API Model-ModelBinder
  7. spcontent------spcollection.add(field)
  8. 使用internal(com.android.internal)和hidden(@hide)APIs – Part 5
  9. 9.切换 iframe
  10. Confluence 6 应该如何在我的空间中组织内容