目录

1. 简介

Gin
GinGin

2. 基本说明

GinGin
GinGingin.Default()Run()
r := gin.Default()
r.Run()
gin.HandlerFuncgin.RouterGroupgin.HandlerFunc
gin.HandlerFuncr.GET()r.POST()
func registerHandler(c *gin.Context) {
    // 注册逻辑...
}
func loginHandler(c *gin.Context) {
    // 登录逻辑...
}
r := gin.Default()
r.GET("/register", registerHandler)
r.POST("/login", loginHandler)
registerHandlerloginHandler/register/login
GinGingin.HandlerFuncgin.RouterGroup

3. 基本实现

Gin
import (
   "github.com/gin-gonic/gin"
   "net/http"
)
func main() {
   // 1. 通过gin.Default 创建一个gin.Engine 实例
   r := gin.Default()
   // 2. 通过gin.Engine 中的 GET/POST 设置路由
   r.GET("/register", func(c *gin.Context) {
      c.String(http.StatusOK, "注册成功")
   })
   r.POST("/login", func(c *gin.Context) {
      // 处理用户提交的数据
      //...
      // 返回响应结果
      c.JSON(http.StatusOK, gin.H{
         "message": "成功登录",
      })
   })
   // 3. 启动服务器
   r.Run(":8080")
}
gin.Defaultgin.EngineGETregisterlogingin.EngineRun8080
8080
 curl http://localhost:8080/register

此时将返回下面数据:

注册成功

4. 原理解释

4.1 路由规则的设置为什么还区分GET和POST方法

GETPOST
r := gin.Default()
r.GET("/register", func(c *gin.Context) {})
r.POST("/login", func(c *gin.Context) {})
gin.EngineGETPOST

这个其实是和HTTP协议相对应的,在 HTTP 协议中,常见的请求方法有 GET、POST、DELETE、PATCH、PUT、OPTIONS、HEAD 等。这些请求方法在语义和功能上有所不同,在实际应用中也会根据需要选择不同的方法进行使用。

GETPOST
GinGETPOSTDELETEPATCHPUTOPTIONSHEADGin
GETPOST
r := gin.Default()
r.GET("/hello", func(c *gin.Context) {
    c.JSON(http.StatusOK, gin.H{
         "message": "hello GET",
    })
})
r.POST("/hello", func(c *gin.Context) {
    c.JSON(http.StatusOK, gin.H{
         "message": "hello POST",
    })
})

此时启动服务器,然后客户端向服务器发起HTTP GET请求,如下:

 curl -X GET http://localhost:8080/hello 
GET
{"message":"hello GET"}

4.2 路由规则是怎么存储的

GinGETPOST
GETGET
                 (根节点)
                   /
                `/user`
                /    \
              `j`   `:id`
             /  \
          `ohn` `ane`
GETPOST
r.GET("/user/john", func(c *gin.Context) {})
r.GET("/user/jane", func(c *gin.Context) {})
r.GET("/user/:id", func(c *gin.Context) {})
r.POST("/user/john", func(c *gin.Context) {})
r.POST("/user/jane", func(c *gin.Context) {})
GETPOST
               (GET根节点)                  (POST根节点)
                   /                           /
                `/user`                     `/user`
                /    \                        /
              `j`   `:id`                   `j` 
             /  \                          /  \
          `ohn` `ane`                   `ohn` `ane`
GETGETPOSTPOST

5.总结

Gin
GETPOST
Gin
您可能感兴趣的文章: