找回密码
 立即注册
首页 业界区 科技 Golang+Gin实现api接口搭建

Golang+Gin实现api接口搭建

宓爰爰 3 天前
1.png

 
一、简介:

Gin是Go语言的一个微框架,也是是一个用 Go (Golang) 编写的 HTTP Web 框架,封装比较优雅,API相对友好。Gin具有性能优异和灵活快速等优点。它具有类似 Martini 的 API,但性能比 Martini 快 40 倍。并且支持中间件、Crash 处理、JSON 验证、路由组、错误管理、内置渲染、可扩展性等....
二、Gin安装
  1. $ go get -u github.com/gin-gonic/gin
复制代码
 
引用方式:
  1. import "github.com/gin-gonic/gin"
复制代码
 
三、使用Gin实现http服务器
  1. package main
  2. import "github.com/gin-gonic/gin"
  3. func main() {
  4.   router := gin.Default()
  5.   router.GET("/hello", func(c *gin.Context) {
  6.     c.JSON(200, gin.H{
  7.       "message": "heelo world!",
  8.     })
  9.   })
  10.   router.Run()//默认127.0.0.1:8080上启动服务
  11. }
复制代码
 
直接先运行
  1. go mod tidy
  2. //再执行
  3. go run main.go
复制代码
 
启动程序
2.jpeg

这样则表示调用成功。
四、路由和控制器
  1. router.GET("/account/:name",func(c *gin.Context){
  2.     name:=c.Param("name")
  3.     c.String(http.StatusOK, "hello %s", name)
  4. })
复制代码
 
注⚠️:冒号":"加上一个参数组成路由参数,而且可以使用c.Param方法都去值。
http请求方法:常用的http请求方法有下面4种:GET、POST、PUT、DELETE
带星号* 模糊匹配参数的url路径
星号代表匹配任意路径的意思, 必须在*号后面指定一个参数名,后面可以通过这个参数获取*号匹配的内容。
  1. router.GET("/account/:name/*act",func(c *gin.Context){
  2.     name:=c.Param("name")
  3.     act := c.Param("act")
  4.     msg := name+" is "+ act
  5.     c.String(http.StatusOK, "hello %s", msg)
  6. })
复制代码
 
 
五、Gin中间件

例如我们设定了一个AuthMiddle权限中间件
我们就可以在接口中这么写
  1. router.GET("/account",AuthMiddle(),func(c *gin.Context){
  2.     name:=c.Param("name")
  3.     c.String(http.StatusOK, "hello %s", name)
  4. })
复制代码
 
这样可以实现横切关注点问题,通常对于记录Log,error handler和接口鉴权等问题。

六、路由


比如:
  1. //实例化gin实例
  2. r := gin.Default()
  3. //post请求
  4. r.POST("/account", SendUser)
  5. //get请求:
  6. r.GET("/account/:id", GetUserInfo)
  7. //put请求
  8. r.PUT("/account/:id", UpdateUser)
  9. //delete请求
  10. r.DELETE("/account/:id", DelUser)
复制代码
 
分组管理
  1. r := gin.Default()
  2. apiv1 := r.Group("/api/v1")
  3. apiv1.Use(jwt.JWT())
  4. {
  5.       apiv1.GET("/tags", v1.GetTags)
  6.       apiv1.POST("/tags", v1.AddTag)
  7.       apiv1.PUT("/tags/:id", v1.EditTag)
  8.       apiv1.DELETE("/tags/:id", v1.DelTag)
  9. }
复制代码
 
结尾:
学习永无止境,有喜欢学习golang的朋友,具体可以参考官方文档进一步学习Gin这个Web框架。
Gin官方文档​gin-gonic.com/zh-cn/docs/introduction/ 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册