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)
	})

你可能感兴趣的:(gin,golang,golang,gin)