GO的Web开发Day12、gin框架,请求参数

get请求的参数获取,普通方式

get请求的参数获取,结构体方式

post请求的参数获取,普通方式

post请求的参数获取,结构体方式

post请求文件参数的参数获取

一般是post的json格式的获取

1、get请求

普通、数组、map,使用Query

请求的地址

http://127.0.0.3:333/get?name=zhngsan&age=25&arr=1&arr=2&arr=3&Map[home]=Beijing&Map[company]=shanghai


func main() {


	fun01 := func(ctx *gin.Context) {
		name := ctx.Query("name")
		age := ctx.Query("age")
		arr := ctx.QueryArray("arr")
		m := ctx.QueryMap("Map")

		ma := make(map[string]any)
		ma["name"] = name
		ma["age"] = age
		ma["arr"] = arr
		ma["m"] = m

		ctx.JSON(200, ma)
	}

	engine := gin.Default()
	engine.GET("/get", fun01)
	err := engine.Run("127.0.0.3:333")
	if err != nil {
		panic(err)
	}
}

2、get请求

的使用结构体,用BindQuery

http://127.0.0.3:333/get?name=zhngsan&age=25&arr=1&arr=2&arr=3&Map[home]=Beijing&Map[company]=shanghai


func main() {


	fun01 := func(ctx *gin.Context) {

		user := struct {
			Name string            `form:"name"`
			Age  int64             `form:"age"`
			Arr  []int64           `form:"arr"`
			Ma   map[string]string `form:"Map"` // 不行
		}{}

		err := ctx.BindQuery(&user)
		if err != nil {
			panic(err)
		}

		m := ctx.QueryMap("Map") // 可以去除这两行测试
		user.Ma = m

		ctx.JSON(200, user)
	}

	engine := gin.Default()
	engine.GET("/get", fun01)
	err := engine.Run("127.0.0.3:333")
	if err != nil {
		panic(err)
	}
}

3、post 

普通,数组,map数组的匹配,使用PostForm
地址,http://127.0.0.3:333/post
body的form-data,表格的值设置内容


func main() {

	fun01 := func(ctx *gin.Context) {

		name := ctx.PostForm("name")
		age := ctx.PostForm("age")
		arr := ctx.PostFormArray("arr")
		m := ctx.PostFormMap("Map")

		ma := make(map[string]any)
		ma["name"] = name
		ma["age"] = age
		ma["arr"] = arr
		ma["m"] = m

		ctx.JSON(200, ma)
	}

	engine := gin.Default()
	engine.POST("/post", fun01)
	err := engine.Run("127.0.0.3:333")
	if err != nil {
		panic(err)
	}

}

4、post

使用结构体方式,用ShouldBind

地址,http://127.0.0.3:333/post
body的form-data,表格的值设置内容


func main() {


	fun01 := func(ctx *gin.Context) {

		user := struct {
			Name string            `form:"name"`
			Age  int64             `form:"age"`
			Arr  []int64           `form:"arr"`
			Ma   map[string]string `form:"Map"` // 不行
		}{}

		err := ctx.ShouldBind(&user)
		if err != nil {
			panic(err)
		}

		m := ctx.PostFormMap("Map") // 可以去除这两行测试
		user.Ma = m

		ctx.JSON(200, user)
	}

	engine := gin.Default()
	engine.POST("/post", fun01)
	err := engine.Run("127.0.0.3:333")
	if err != nil {
		panic(err)
	}

}


5、post

表格的文件,使用MultipartForm

http://127.0.0.3:333/post

body的form-data,表格的文件,设置内容


func main() {

	

	fun01 := func(ctx *gin.Context) {

		form, err := ctx.MultipartForm()
		if err != nil {
			panic(err)
		}

		// Value map[string][]string
		// 只有数组是数组,其他都是键值对
		// 没必要使用个使用ctx.shouldBind()或者.PostForm()
		for k, v := range form.Value {
			fmt.Println(k, v)
		}

		// File  map[string][]*FileHeader
		for _, fileArray := range form.File {
			for _, v := range fileArray {
				ctx.SaveUploadedFile(v, "./"+v.Filename)
			}
		}

		ctx.JSON(200, "ok")
	}

	engine := gin.Default()
	engine.POST("/post", fun01)
	err := engine.Run("127.0.0.3:333")
	if err != nil {
		panic(err)
	}

}

6、一般是post
json数据,ShouldBindJSON,其他类型参数注入xml,yaml等道理一样.

全都可以,map也可以

地址

http://127.0.0.3:333/post
body的raw

      {
            "Name": "zhangsan",
            "Age": 18,
            "Arr": [ 12,43,22],
            "Ma": { "company": "shanghai","home": "chengdu"}
       }


func main() {

	fun01 := func(ctx *gin.Context) {

		user := struct {
			Name string            `form:"name"`
			Age  int64             `form:"age"`
			Arr  []int64           `form:"arr"`
			Ma   map[string]string `form:"Map"` // 不行
		}{}

		err := ctx.ShouldBindJSON(&user)
		if err != nil {
			panic(err)
		}

		ctx.JSON(200, user)
	}

	engine := gin.Default()
	engine.POST("/post", fun01)
	err := engine.Run("127.0.0.3:333")
	if err != nil {
		panic(err)
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值