Gin是使用Go编写的一个web框架,具有高性能的特点,也是比较常用的一款web框架,类似的还有echo框架,今天这个就说一下使用gin做一个web接口。

    这是我的一个简单的目录,分别对应的是

    1. yourAppName WEB部署目录(或者子目录)
    2. ├─apis 接口目录
    3. ├─user 用户模块
    4. ├─user.go 用户接口
    5. ├─websocket websocket模块
    6. ├─socket.go socket接口
    7. ├─struct.go 结构体文件
    8. ├─config 配置
    9. ├─config.json 配置文件
    10. ├─middleware 应用目录
    11. ├─DB 数据库连接
    12. ├─tools 小工具
    13. ├─config.go 读取配置
    14. ├─... 集成的一些小工具。第三方adkapi
    15. ├─router 路由
    16. ├─router.go 路由文件
    17. │─go.mod Golang包管理工具
    18. ├─go.sum Golang
    19. ├─main.go 入口文件
    20. ├─... 更多文件

    第二节建立基础web服务 - 图1

    比如我们现在要写一个登录的接口,那么我们在apis->user->user.go中创建一个login方法,

    1. package user
    2. import (
    3. "github.com/gin-gonic/gin"
    4. "net/http"
    5. )
    6. func Login(c *gin.Context) {
    7. // 获取get方式参数
    8. // username := c.Param("username")
    9. username := c.Query("username")
    10. // 获取post方式参数
    11. // username := c.PostForm("username")
    12. // 获取header参数
    13. // c.Request.Header.Get("username")
    14. data := make(map[string]interface{}, 0)
    15. data["username"] = username
    16. c.JSON(http.StatusOK, gin.H{
    17. "message": "success",
    18. "status": http.StatusOK,
    19. "data": data,
    20. })
    21. c.Abort()
    22. return
    23. }

    在这个文件中我们用到了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文件

    1. package router
    2. import (
    3. "NowIM/apis/user"
    4. "NowIM/apis/websocket"
    5. "github.com/gin-gonic/gin"
    6. )
    7. func InitRouter() *gin.Engine {
    8. router := gin.Default()
    9. router.GET("/", websocket.WebsocketManager.WsClient)
    10. router.GET("/user/login", user.Login)
    11. return router
    12. }

    首先定义一个gin的初始化engine,再往engine中加入我们需要访问到对应接口的路由,
    比如上面定义了使用get方式请求路由地址为/user/list访问到对应的登录接口,路由这里写好了那么在根目录下的main.go文件中初始化我们的路由。并且设置访问的端口。

    1. package main
    2. import (
    3. . "NowIM/router"
    4. )
    5. func main() {
    6. router := InitRouter()
    7. if err := router.Run(":8081"); err != nil {
    8. panic(err)
    9. }
    10. }

    另外这里要注意,端口必须前面带上:否则会无法启动。
    这些步骤都做好了之后,那么就可以在根目录下运行go run main.go来启动服务
    第二节建立基础web服务 - 图2

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

    第二节建立基础web服务 - 图3
    这里使用postman进行接口测试,在接口后带上参数username,并且将参数加入到json中返回。