go服务端----使用gin框架搭建简易服务
来源:互联网 发布:维斯布鲁克数据库 编辑:程序博客网 时间:2024/05/21 08:54
使用gin框架搭建简易服务
go语言web框架挺多的,各有各的特点和风格。我之所以在项目中使用gin框架,是因为项目一开始是用的martini,一个设计得很好的框架,但是存在一个比较严重的问题,就是大量使用反射使用太多导致效率过低(这个问题也导致了程序在访问量暴涨时内存上涨过快的问题),而且这个框架在去年就没有人维护了,而作者推荐使用风格很相近的gin框架,大概看了一下,风格确实差不多,而且效率很高,于是就用了gin。至于其它的框架,了解得比较多的是beego,项目中也使用了它的子项目beelog,但是由于我做的项目是偏向于应用服务,而不是网站服务,它的风格更适合网站服务,因此就没有选择它。
贴一下这两个框架的github仓库,martini就不推荐了
gin
beego
下面贴一下用gin搭建一个简易的应用服务的代码片段,非常的简单,看一下代码注释也很容易理解。
package mainimport ( "fmt" "github.com/gin-gonic/gin" "net/http")func main() { gin.SetMode(gin.DebugMode) //全局设置环境,此为开发环境,线上环境为gin.ReleaseMode router := gin.Default() //获得路由实例 //添加中间件 router.Use(Middleware) //注册接口 router.GET("/simple/server/get", GetHandler) router.POST("/simple/server/post", PostHandler) router.PUT("/simple/server/put", PutHandler) router.DELETE("/simple/server/delete", DeleteHandler) //监听端口 http.ListenAndServe(":8005", router)}func Middleware(c *gin.Context) { fmt.Println("this is a middleware!")}func GetHandler(c *gin.Context) { value, exist := c.GetQuery("key") if !exist { value = "the key is not exist!" } c.Data(http.StatusOK, "text/plain", []byte(fmt.Sprintf("get success! %s\n", value))) return}func PostHandler(c *gin.Context) { type JsonHolder struct { Id int `json:"id"` Name string `json:"name"` } holder := JsonHolder{Id: 1, Name: "my name"} //若返回json数据,可以直接使用gin封装好的JSON方法 c.JSON(http.StatusOK, holder) return}func PutHandler(c *gin.Context) { c.Data(http.StatusOK, "text/plain", []byte("put success!\n")) return}func DeleteHandler(c *gin.Context) { c.Data(http.StatusOK, "text/plain", []byte("delete success!\n")) return}
用curl命令访问这些接口可以得到对应的返回结果
程序的日志输出
这里只是快速上手的一些方法,作为一个web服务框架,功能当然非常强大,这就需要在实际使用中慢慢挖掘和深究了。
0 0
- go服务端----使用gin框架搭建简易服务
- Go实战--通过gin-gonic框架搭建restful api服务(github.com/gin-gonic/gin)
- Go语言web框架 gin
- Go-gin的基本使用
- Go-gin的基本使用
- go的gin框架的性能测试
- httprouter框架 (Gin使用的路由框架)
- gin框架
- go语言web框架gin 从请求中取参数
- 使用Apache MINA框架搭建服务端
- 使用go reflect实现一套简易的rpc框架
- 使用myeclipse搭建ssh框架(简易)
- Gin Web框架简介
- Gin框架初识
- Gin 框架源码笔记
- golang-gin框架笔记
- express搭建服务端框架
- go revel框架搭建
- 测试文章
- 第3.1.1章 WEB系统最佳实践 js控件之slimScroll的使用
- 一天一条Linux指令-uname
- 读《白说》有感
- VBA SQL连接
- go服务端----使用gin框架搭建简易服务
- javascript中this指向问题的综合
- 论文笔记-Augmented Lagrange Multiplier Method for Recovery of Low-Rank Matrices
- Android 连接指定的wifi
- 1149计算题
- 让生命孤独的怒放——《晚安 北京》读后感
- 【C语言】写一个宏将一个数字的奇数位和偶数位交换
- Activity的生命周期和启动模式
- R对象属性与槽