zoukankan      html  css  js  c++  java
  • Gin 绑定Query JSON FORM URI 示例

    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
    	}
    }
    
    
    
  • 相关阅读:
    阿里笔试题—战报交流
    2 基于梯度的攻击——PGD
    1 基于梯度的攻击——FGSM
    0 对抗样本
    自然语言处理 复习笔记 3
    自然语言处理 复习笔记 2
    自然语言处理 复习笔记 1
    GRU
    1*1卷积核的作用
    BP原理
  • 原文地址:https://www.cnblogs.com/guohewei/p/15254292.html
Copyright © 2011-2022 走看看