golang+gin实现api接口开发

一、简介:

Gin是Go语言的一个微框架,也是是一个用 Go (Golang) 编写的 HTTP Web 框架,封装比较优雅,API相对友好。Gin具有性能优异和灵活快速等优点。它具有类似 Martini 的 API,但性能比 Martini 快 40 倍。并且支持中间件、Crash 处理、JSON 验证、路由组错误管理内置渲染可扩展性等....

二、Gin安装

复制代码
$ go get -u github.com/gin-gonic/gin

引用方式:

复制代码
import "github.com/gin-gonic/gin"

三、使用Gin实现http服务器

复制代码
package main

import "github.com/gin-gonic/gin"

func main() {
  router := gin.Default()
  router.GET("/hello", func(c *gin.Context) {
    c.JSON(200, gin.H{
      "message": "heelo world!",
    })
  })
  router.Run()//默认127.0.0.1:8080上启动服务
}

直接先运行

复制代码
go mod tidy
//再执行
go run main.go

启动程序

这样则表示调用成功。

四、路由和控制器

复制代码
router.GET("/account/:name",func(c *gin.Context){
    name:=c.Param("name")
    c.String(http.StatusOK, "hello %s", name)
})

注⚠️:冒号":"加上一个参数组成路由参数,而且可以使用c.Param方法都去值。

http请求方法:常用的http请求方法有下面4种:GET、POST、PUT、DELETE

带星号* 模糊匹配参数的url路径

星号代表匹配任意路径的意思, 必须在*号后面指定一个参数名,后面可以通过这个参数获取*号匹配的内容。

复制代码
router.GET("/account/:name/*act",func(c *gin.Context){
    name:=c.Param("name")
    act := c.Param("act")
    msg := name+" is "+ act
    c.String(http.StatusOK, "hello %s", msg)
})

五、Gin中间件

例如我们设定了一个AuthMiddle权限中间件

我们就可以在接口中这么写

复制代码
router.GET("/account",AuthMiddle(),func(c *gin.Context){
    name:=c.Param("name")
    c.String(http.StatusOK, "hello %s", name)
})

这样可以实现横切关注点问题,通常对于记录Log,error handler和接口鉴权等问题。

六、路由

比如:

复制代码
//实例化gin实例
r := gin.Default()
//post请求
r.POST("/account", SendUser)
//get请求:
r.GET("/account/:id", GetUserInfo)
//put请求
r.PUT("/account/:id", UpdateUser)
//delete请求
r.DELETE("/account/:id", DelUser)

分组管理

复制代码
r := gin.Default()
apiv1 := r.Group("/api/v1")
apiv1.Use(jwt.JWT())
{
      apiv1.GET("/tags", v1.GetTags)
      apiv1.POST("/tags", v1.AddTag)
      apiv1.PUT("/tags/:id", v1.EditTag)
      apiv1.DELETE("/tags/:id", v1.DelTag)
}

结尾:

学习永无止境,有喜欢学习golang的朋友,具体可以参考官方文档进一步学习Gin这个Web框架。
Gin官方文档gin-gonic.com/zh-cn/docs/introduction/

相关推荐
zhangfeng113311 小时前
Ollama 支持模型微调但是不支持词库,支持RAG,go语言开发的大模型的推理应用,
人工智能·深度学习·golang
Dr.Kun13 小时前
【鲲码园PsychoPy】Go/No-go范式
开发语言·后端·golang
源代码•宸14 小时前
Golang面试题库(Interface、GMP)
开发语言·经验分享·后端·面试·golang·gmp·调度过程
西京刀客14 小时前
Go 语言中的 toolchain 指令-toolchain go1.23.6的作用和目的
开发语言·后端·golang·toolchain
暴躁小师兄数据学院15 小时前
【WEB3.0零基础转行笔记】编程语言篇-第一讲:Go语言基础及环节搭建
笔记·golang·web3·区块链
lead520lyq1 天前
Golang本地内存缓存
开发语言·缓存·golang
小邓吖1 天前
自己做了一个工具网站
前端·分布式·后端·中间件·架构·golang
码界奇点1 天前
基于Gin与GORM的若依后台管理系统设计与实现
论文阅读·go·毕业设计·gin·源代码管理
迷迭香与樱花1 天前
Gin 框架
go·gin
金庆1 天前
Commit Hash from debug.ReadBuildInfo()
golang