标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。