Gin快速入门:四大请求方式及获取请求参数的各种方式| 青训营

44 阅读2分钟

四大请求方式

GET POST PUT DELETE

其中最常见的为GET和POST请求

Restful风格指的是网络应用中就是资源定位和资源操作的风格。不是标准也不是协议。

GET:从服务器取出资源(一项或多项)

POST:在服务器新建一个资源 (注册服务)

PUT:在服务器更新资源(客户端提供完整资源数据)

PATCH:在服务器更新资源(客户端提供需要修改的资源数据)

DELETE:从服务器删除资源

注意:对代码的解释多为注释部分

Gin框架获取请求参数的各种方式

在Gin框架中,获取请求参数的方式有以下几种:

  1. GET请求参数
  2. POST请求参数-Form表单
  3. POST请求参数-JSON格式
  4. URL参数
  5. 请求头部参数

1. GET请求参数

func main() {
    router := gin.Default()

    // 使用GET请求并获取参数
    router.GET("/user", func(c *gin.Context) {
        // 使用Query获取请求参数
        username := c.Query("username")
        password := c.Query("password")

        // 返回请求参数
        c.JSON(200, gin.H{
            "username": username,
            "password": password,
        })
    })

    // 运行服务
    router.Run(":8080")
}

2. POST请求参数-Form表单

func main() {
    router := gin.Default()

    // 使用POST请求并获取参数
    router.POST("/user", func(c *gin.Context) {
        // 使用PostForm获取请求参数
        username := c.PostForm("username")
        password := c.PostForm("password")

        // 返回请求参数
        c.JSON(200, gin.H{
            "username": username,
            "password": password,
        })
    })

    // 运行服务
    router.Run(":8080")
}

3. POST请求参数-JSON格式

func main() {
    router := gin.Default()

    // 使用POST请求并获取参数
    router.POST("/user", func(c *gin.Context) {
        // 将JSON格式请求参数绑定到结构体上
        var user User
        if err := c.BindJSON(&user); err != nil {
            // 返回错误信息
            c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
            return
        }

        // 返回请求参数
        c.JSON(200, gin.H{
            "username": user.Username,
            "password": user.Password,
        })
    })

    // 运行服务
    router.Run(":8080")
}

type User struct {
    Username string `json:"username"`
    Password string `json:"password"`
}

4. URL参数

func main() {
    router := gin.Default()

    // 使用URL参数并获取参数
    router.GET("/user/:username/:password", func(c *gin.Context) {
        // 使用Param获取URL参数
        username := c.Param("username")
        password := c.Param("password")

        // 返回请求参数
        c.JSON(200, gin.H{
            "username": username,
            "password": password,
        })
    })

    // 运行服务
    router.Run(":8080")
}

5. 请求头部参数

func main() {
    router := gin.Default()

    // 使用请求头部参数并获取参数
    router.GET("/user", func(c *gin.Context) {
        // 使用Request获取请求头部参数
        username := c.Request.Header.Get("username")
        password := c.Request.Header.Get("password")

        // 返回请求参数
        c.JSON(200, gin.H{
            "username": username,
            "password": password,
        })
    })

    // 运行服务
    router.Run(":8080")
}