Gin是使用Go编写的一个web框架,具有高性能的特点,也是比较常用的一款web框架,类似的还有echo框架,今天这个就说一下使用gin做一个web接口。
这是我的一个简单的目录,分别对应的是
yourAppName WEB部署目录(或者子目录)
├─apis 接口目录
│ ├─user 用户模块
│ │ ├─user.go 用户接口
│ ├─websocket websocket模块
│ │ ├─socket.go socket接口
│ │ ├─struct.go 结构体文件
├─config 配置
│ ├─config.json 配置文件
├─middleware 应用目录
│ ├─DB 数据库连接
│ ├─tools 小工具
│ │ ├─config.go 读取配置
│ ├─... 集成的一些小工具。第三方adk,api等
│ │
├─router 路由
│ ├─router.go 路由文件
│─go.mod Golang包管理工具
│ ├─go.sum Golang包
├─main.go 入口文件
├─... 更多文件

比如我们现在要写一个登录的接口,那么我们在apis->user->user.go中创建一个login方法,
package user
import (
"github.com/gin-gonic/gin"
"net/http"
)
func Login(c *gin.Context) {
// 获取get方式参数
// username := c.Param("username")
username := c.Query("username")
// 获取post方式参数
// username := c.PostForm("username")
// 获取header参数
// c.Request.Header.Get("username")
data := make(map[string]interface{}, 0)
data["username"] = username
c.JSON(http.StatusOK, gin.H{
"message": "success",
"status": http.StatusOK,
"data": data,
})
c.Abort()
return
}
在这个文件中我们用到了gin的框架包,因为我这里是已经get过所以是显示成,在项目初始化的时候需要执行 go get github.com/gin-gonic/gin
来获取这个包,我们才可以使用,不然的话这里就会报错。在方法中Login(c *gin.Context)就可以使用gin框架了,gin框架中自带了几种获取参数的方式,get方式通过url获取参数c.Query("username"),c.Param("username")
,post方式通过c.PostForm("username")
来获取参数,还有通过c.Request.Header.Get("username")
来获取header中的参数,当然获取参数的方式不止这些,这里只列举了几个,可以前往gin官网查看文档,或者通过查看源码来了解更多的获取参数方式。
接口写好了后我们要在访问到接口那么需要配置一下路由,在router目录中创建router.go文件
package router
import (
"NowIM/apis/user"
"NowIM/apis/websocket"
"github.com/gin-gonic/gin"
)
func InitRouter() *gin.Engine {
router := gin.Default()
router.GET("/", websocket.WebsocketManager.WsClient)
router.GET("/user/login", user.Login)
return router
}
首先定义一个gin的初始化engine,再往engine中加入我们需要访问到对应接口的路由,
比如上面定义了使用get方式请求路由地址为/user/list访问到对应的登录接口,路由这里写好了那么在根目录下的main.go文件中初始化我们的路由。并且设置访问的端口。
package main
import (
. "NowIM/router"
)
func main() {
router := InitRouter()
if err := router.Run(":8081"); err != nil {
panic(err)
}
}
另外这里要注意,端口必须前面带上:否则会无法启动。
这些步骤都做好了之后,那么就可以在根目录下运行go run main.go
来启动服务

上面已经启动完成了,指定的端口8081,因为是本地运行,那么通过链接127.0.0.1:8081/user/login就可以访问到接口了

这里使用postman进行接口测试,在接口后带上参数username,并且将参数加入到json中返回。