Gin 框架 —— HTTP 请求参数获取

424 阅读2分钟

我正在参加「掘金·启航计划」


go 语言的 web 框架比较出名的有 gin, goframe 等,为了练习 go 语言,选择了 gin 框架作为实战对象。作为一名合格的 CURD 仔,学习 web 框架的第一步当然就是增删查改了,所以本文就是介绍一下怎么跑起 gin 应用并处理 GET, POST 请求, 对 gin 框架有所了解的可以跳过了,仅仅是初学者值得看看。

  • GET 请求
package main

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

func main() {
   r := gin.Default()
   // 绑定路由规则和执行函数
   r.GET("/test", func(c *gin.Context) {
      // 获取查询参数
      name := c.Query("name")
      // 返回 JSON 字符串
      c.JSON(200, gin.H{
         "name": name,
         "age": 12,
      })
   })
   // r.Run(":8080") 可以修改端口,默认是 8080 端口
   r.Run()
   
}

可以看到,GET 请求获取查询参数的方式,就是通过上下文 context 的 Query 对象,返回响应则是封装在上下文 context 的 JSON 对象里

  • POST 请求
package main

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

type UserInfo struct {
   // 表明该属性与传递的 json 的 user 属性进行绑定
   Username     string `json:"username" binding:"required"`
   Age int `json:"age" binding:"required"`
}

func main() {
   // post 请求
   r := gin.Default()

   r.POST("/add_user", func(c *gin.Context) {
      var Params UserInfo
      c.ShouldBindJSON(&Params)
      c.JSON(200, gin.H{
         "Username": Params.Username,
         "Age": Params.Age,
      })
   })
   r.Run()
}

而 POST 请求获取 json 参数的方式就比较特别了,需要先定义一个绑定对象,这个绑定对象就是用来检验 json 里面的参数,包括类型,是否必传,相对于其他 web 框架,这一点就显得比较充分了,把参数类型校验作为一个必须完成的校对,繁琐但是却减少误解。 定义完校验参数的对象之后,通过 context 上下文的 ShouldBindJSON 方法就能将参数提取出来。

这样就完成了 gin 框架基本的入门应用,get 请求和 post 请求的参数获取和响应返回。后续找一些具体的项目,使用 gin 做一些实战开发,期待!!