gin框架中获取请求参数方式
本文最后更新于121 天前,其中的信息可能已经过时。
Gin框架中获取请求参数方式

Gin框架中获取请求参数方式

GET

 

    app := gin.Default()

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

 

POST–From表单形式 关键词post

 

    app := gin.Default()

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

 

POST–JSON形式 关键词Json

 

//先定义一个用来接收json数据的结构体,json:"username" 表示Username 用来返回给前端的key即这样返回
{
    "username":Username,
    "password":Password,
}
type User struct {
    Username string `json:"username"`
    Password string `json:"password"`
}

app := gin.Default()
// 使用POST请求并获取参数
app.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(http.StatusOK,user)
})

 

URL参数(直接把参数写入url中) 关键词Param

 

	app := gin.Default()
	// 使用请求头部参数并获取参数
    app.GET("/user/:username/:password", 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,
        })
    })

 

获取请求头参数 关键词Header

 

    app := gin.Default()
	// 使用请求头部参数并获取参数
    app.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,
        })
    })

 

自动映射参数,省去了重复的参数获取和类型转换 关键词Bind
// 定义需要绑定请求参数的结构体
//`form:"username" json:"username" binding:"required"`
// form表示前端传值key 为 front_username  把值绑定到Username字段
// json表示后端传值key 为 back_username   把Username字段的值相应给前端
type User struct {
    Username string `form:"front_username" json:"back_username" `
    Password string `form:"password" json:"password" `
}

app :=  gin.Default()

// 使用ShouldBind方法自动绑定请求参数到结构体,并进行校验
app.POST("/user", func(c *gin.Context) {
    var user User
    if err := c.ShouldBind(&user); err != nil {      //根据req的content type 自动推断如何绑定,form/json/xml等格式
        c.JSON(400, gin.H{"error": err.Error()})
        return
    }
    //响应数据
    c.JSON(200, user)
})

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

 

 

只要需要提供结构体, 就能把各个部分的校验规则简单定义, 并且能够对请求中的参数进行一些简单的校验,只有校验通了才能真正的请求后端资源,拒绝无效请求 go完全可以 下面我们来看一些简单的校验规则

binding 标签用于指定 Gin 框架在绑定请求参数时应用的验证规则。通过在结构体字段上添加 binding 标签,你可以定义字段的验证规则,确保请求参数满足预期的条件。以下是一些常见的 binding 标签值和示例说明:

  1. "required": 该标签要求字段在请求中必须存在,否则绑定过程将返回错误。

    type User struct {
        Username string `form:"username" binding:"required"`
        Password string `form:"password" binding:"required"`
    }
    
  2. "min""max": 用于验证数字类型字段的最小和最大值。

    type AgeValidation struct {
        Age int `form:"age" binding:"required,min=18,max=99"`
    }
    
  3. "len""min": 用于验证字符串类型字段的长度。

    type NameValidation struct {
        Name string `form:"name" binding:"required,min=3,max=50"`
    }
    
  4. "email": 用于验证邮箱地址。

    type EmailValidation struct {
        Email string `form:"email" binding:"required,email"`
    }
    
  5. "url": 用于验证 URL 地址。

    goCopy codetype URLValidation struct {
        URL string `form:"url" binding:"required,url"`
    }
    

这些是一些基本的 binding 标签的使用示例。使用这些标签,你可以定义结构体字段的验证规则,确保请求参数的合法性。在实际应用中,你可以根据具体的验证需求选择合适的标签组合。

示例

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

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

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

	app.POST("/ping", func(context *gin.Context) {
		var user User
		err := context.ShouldBind(&user)
		if err != nil {
			context.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
			return
		}
		context.JSON(http.StatusOK, user)
	})

	app.Run()
}

 

  • 当我们的请求参数都传时

    image-20231205172602423

  • 当我们请求参数只有username

    image-20231205172432236

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇