beego搭建api服务
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服务的更多相关文章
- 如何使用 Gin 和 Gorm 搭建一个简单的 API 服务 (一)
介绍 Go 语言最近十分火热,但对于新手来说,想立马上手全新的语法和各种各样的框架还是有点难度的.即使是基础学习也很有挺有挑战性. 在这篇文章中,我想用最少的代码写出一个可用的 API 服务. ...
- mock---前端搭建模拟服务
在做前端开发接口的时候,往往接口都是从后端来的,这让前端很苦恼,但是有了 MockServer ,前端也可以搭建API服务了. server-mock是什么? 是一款nodejs的应用,用于搭建web ...
- 使用 Beego 搭建 Restful API 项目
1 环境准备 首先你需要在你的环境安装以下软件: go:编程语言运行环境 git:版本控制工具 beego:go 语言流行的开发框架 bee:beego 配套的快速搭建工具 你喜欢的数据库:这里以 M ...
- 使用CodeIgniter框架搭建RESTful API服务
使用CodeIgniter框架搭建RESTful API服务 发表于 2014-07-12 | 分类于 翻译笔记 | 6条评论 在2011年8月的时候,我写了一篇博客<使用Cod ...
- ServiceStack.Hello——跨平台.net REST api服务搭建
ServiceStack.Hello--跨平台.net REST api服务搭建 自己创建: https://github.com/ServiceStack/ServiceStack/wiki/Cre ...
- spring cloud+dotnet core搭建微服务架构:Api网关(三)
前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...
- spring cloud+dotnet core搭建微服务架构:Api授权认证(六)
前言 这篇文章拖太久了,因为最近实在太忙了,加上这篇文章也非常长,所以花了不少时间,给大家说句抱歉.好,进入正题.目前的项目基本都是前后端分离了,前端分Web,Ios,Android...,后端也基本 ...
- 使用nodejs搭建api的mock服务
1. 介绍 公司的业务开发都是静态页面,开发前期总是避免不了获取api的问题.在vue中有一些mockjs的方案,方案都是注入性质的,和最终部署总是有差别,而且业务大部分还在zepto下,很难找到合适 ...
- spring cloud+.net core搭建微服务架构:Api授权认证(六)
前言 这篇文章拖太久了,因为最近实在太忙了,加上这篇文章也非常长,所以花了不少时间,给大家说句抱歉.好,进入正题.目前的项目基本都是前后端分离了,前端分Web,Ios,Android...,后端也基本 ...
随机推荐
- Spring Security + OAuth2 + JWT 基本使用
Spring Security + OAuth2 + JWT 基本使用 前面学习了 Spring Security 入门,现在搭配 oauth2 + JWT 进行测试. 1.什么是 OAuth2 OA ...
- makefile的函数集合
strip函数:$(strip text) 函数功能:去除字符串空格函数 示例: STR = a b c LOSTR = $(strip $(STR)) #结果是&quo ...
- CSS中的颜色、长度、角度、时间
一.颜色的表示方法 颜色是通过对红.绿和蓝光的组合来显示的. 1.颜色名 1 <!DOCTYPE html> 2 <html lang="en"> 3 &l ...
- Hive 安装和配置
环境准备 已安装 HDFS 和 Yarn 集群环境 Windows 已安装 MySQL 8 (开启远程连接用户权限) 安装步骤 1. 上传并解压 Hive 安装文件 将 apache-hive-3.1 ...
- 云计算OpenStack---维护及错误排查(13)
错误一:删除僵尸卷 在openstack dashboard中正常删除实例,未删除卷,然后重启了服务器,出现BUG,卷被附加给了'NONE',并且无法删除,无法更新. 既然log中已经提示无法删除卷的 ...
- OSI 七层参考模型与 TCP/IP 四层协议
OSI 七层参考模型 OSI (Open System Interconnect,开放系统互连参考模型)是由 ISO(国际标准化组织)定义的,它是个灵活的.稳健的和可互操作的模型,并不是协议,常用来分 ...
- 在安装python 第三方库时遇到【WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, st】问题
在命令执行窗输入: pip install Pyinstaller -i http://pypi.douban.com/simple --trusted-host pypi.douban.com (其 ...
- java 集合梳理
使用 processOn 画的java 集合图谱,应付面试应该可以了
- HUAWEI防火墙通过L2TP隧道让外出员工访问公司内网的各种资源
组网图形 组网需求 企业网络如图所示,企业希望公司外的移动办公用户能够通过L2TP VPN隧道访问公司内网的各种资源. 操作步骤 配置LNS. 1.配置接口IP地址,并将接口加入安全区域. <L ...
- uboot通过NFS挂载ubuntu根文件系统
由于工作需要,在做app开发或系统移植时,经常需要编辑系统后重新烧写异常麻烦.通过NFS挂载根文件系统就不需要每次更改系统后再进行编译和烧写,等开发完成后一次烧写即可完成. 一.准备材料 可以根据自己 ...