• go gin r.Any Query PostForm Param获取请求参数


    结论:

    获取url里的参数:http://localhost:8080/p1?a=%E3%81%82%E6%9D%B1%E4%BA%AC

    • Query:如果获取不到,返回空字符串
    • DefaultQuery:如果获取不到,返回参数2
    • GetQuery:如果获取不到,返回空字符串,且ok=false

    获取post请求表单的参数:

    • PostForm:估计同Query,未测试
    • DefaultPostForm:估计同DefaultQuery,未测试
    • GetPostForm:估计同GetQuery,未测试

    获取restful参数:/p2/:id/update/:name

    • 如果获取不到,返回空字符串
    • p2//update/a能访问
    • p2/3/update//不能访问
    package main
    
    import (
    	"github.com/gin-gonic/gin"
    	"html/template"
    	"log"
    	"net/http"
    )
    
    func main() {
    	mainGin()
    }
    
    func mainGin() {
    	r := gin.Default()
    
    	//处理url请求
    	r.Any("/p1", func(c *gin.Context) {
    		switch c.Request.Method {
    		case "GET":
    			a1 := c.Query("a")
    			a2 := c.DefaultQuery("a", "Default A")
    			a3, ok := c.GetQuery("a")
    			log.Println("\na1=", a1, "\na2=", a2, "\na3=", a3, "\nok=", ok)
    			log.Println("\na1=", len(a1), "\na2=", len(a2), "\na3=", len(a3))
    			log.Println("\na1=", a1 == "", "\na3=", a3 == "")
    		case "POST":
    			a1 := c.PostForm("a")
    			a2 := c.DefaultPostForm("a", "Default A")
    			a3, ok := c.GetPostForm("a")
    			log.Println("\na1=", a1, "\na2=", a2, "\na3=", a3, "\nok=", ok)
    			log.Println("\na1=", len(a1), "\na2=", len(a2), "\na3=", len(a3))
    			log.Println("\na1=", a1 == "", "\na3=", a3 == "")
    		default:
    			log.Println("c.Request.Method=", c.Request.Method)
    		}
    		c.JSON(http.StatusOK, nil)
    	})
    
    	///p2//update/a  ok
    	///p2/3/update//  ng
    	r.GET("/p2/:id/update/:name", func(c *gin.Context) {
    		a1 := c.Param("id")
    		a2 := c.Param("name")
    
    		log.Println("\na1=", a1, "\na2=", a2)
    		log.Println("\na1=", len(a1), "\na2=", len(a2))
    		log.Println("\na1=", a1 == "", "\na2=", a2 == "")
    
    		c.JSON(http.StatusOK, nil)
    	})
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
  • 相关阅读:
    Ubuntu安装postgresql并连接navicat
    DataX实现Mysql与ElasticSearch(ES)数据同步
    [Vue]缓存路由组件 & activated()与deactivated()
    《面试1v1》JVM内存模型
    React中编写操作树形数据的自定义Hook
    ffmpeg之avformat_alloc_output_context2
    Keil转STM32CubeIDE工程移植问题记录
    leetcode 509. Fibonacci Number(斐波那契数字)
    SWT/ANR问题--Native方法执行时间过长导致SWT
    预售拼购模式是什么?有什么优势?
  • 原文地址:https://blog.csdn.net/weixin_43292547/article/details/126904078