ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Gin 绑定Query JSON FORM URI 示例

2021-09-11 12:32:06  阅读:194  来源: 互联网

标签:http FORM err 示例 -- binding URI person json


package main

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

type PersonJson struct {
	Age     int    `json:"age" binding:"required,gt=10"`
	Address string `json:"addr" binding:"required"`
	Name    string `json:"name" binding:"required"`
}

type PersonForm struct {
	Age     int    `form:"age" json:"age" binding:"required,gt=10"`
	Address string `form:"addr" json:"addr" binding:"required"`
	Name    string `form:"name" json:"name" binding:"required"`
}

type PersonUri struct {
	Age     int    `uri:"age" binding:"required,gt=10"`
	Address string `uri:"addr" binding:"required"`
	Name    string `uri:"name" binding:"required"`
}

func main() {
	r := gin.Default()
	r.POST("/bind/json", testJson)
	r.GET("/bind/query", testQuery)
	r.POST("/bind/form", testFrom)
	r.PUT("/bind/uri/:age/:name/:addr", testUri)
	err := r.Run()
	if err != nil {
		panic(err)
	}
}

/*
curl --request POST 'http://127.0.0.1:8080/bind/json' \
--header 'Content-Type: application/json' \
--data-raw '{
    "age": 11,
    "addr": "北京",
    "name": "老大"
}'
*/
func testJson(c *gin.Context) {
	var person PersonJson
	if err := c.ShouldBindJSON(&person); err == nil {
		c.JSON(http.StatusOK, person)
	} else {
		c.String(http.StatusBadRequest, "person bing error: %v", err)
		c.Abort()
		return
	}
}

// curl --request GET 'http://127.0.0.1:8080/bind/query?age=19&addr=内蒙&name=小小'
func testQuery(c *gin.Context) {
	var person PersonForm
	if err := c.ShouldBindQuery(&person); err == nil {
		c.JSON(http.StatusOK, person)
	} else {
		c.String(http.StatusBadRequest, "person bing error: %v", err)
		c.Abort()
		return
	}
}

// curl --request PUT 'http://127.0.0.1:8080/bind/uri/20/小小/北京'
func testUri(c *gin.Context) {
	var person PersonUri
	if err := c.ShouldBindUri(&person); err == nil {
		c.JSON(http.StatusOK, person)
	} else {
		c.String(http.StatusBadRequest, "person bing error: %v", err)
		c.Abort()
		return
	}
}

/*
curl --request POST 'http://127.0.0.1:8080/bind/form' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--form 'age="20"' \
--form 'name="大大"' \
--form 'addr="天通苑"'
*/
func testFrom(c *gin.Context) {
	var person PersonForm
	if err := c.ShouldBindWith(&person, binding.Form); err == nil {
		c.JSON(http.StatusOK, person)
	} else {
		c.String(http.StatusBadRequest, "person bing error: %v", err)
		c.Abort()
		return
	}
}


标签:http,FORM,err,示例,--,binding,URI,person,json
来源: https://www.cnblogs.com/guohewei/p/15254292.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有