GoFrame 請求輸入-復(fù)雜參數(shù)

2022-04-13 15:25 更新

復(fù)雜參數(shù)

?ghttp.Request?對象支持智能的參數(shù)類型解析(不區(qū)分請求提交方式及請求提交類型),以下為提交參數(shù)示例以及服務(wù)端對應(yīng)解析的變量類型:

Parameter
Variable
k=m&k=n map[k:n]
k1=m&k2=n map[k1:m k2:n]
k[]=m&k[]=n map[k:[m n]]
k[a][]=m&k[a][]=n map[k:map[a:[m n]]]
k[a]=m&k[b]=n map[k:map[a:m b:n]]
k[a][a]=m&k[a][b]=n map[k:map[a:map[a:m b:n]]]
k=m&k[a]=n error

同名參數(shù)

同名參數(shù)提交格式形如:?k=v1&k=v2? ,后續(xù)的變量值將會覆蓋前面的變量值。

package main

import (
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/net/ghttp"
)

func main() {
	s := g.Server()
	s.BindHandler("/", func(r *ghttp.Request) {
		r.Response.Write(r.Get("name"))
	})
	s.SetPort(8199)
	s.Run()
}

執(zhí)行后,我們訪問 http://127.0.0.1:8199/?name=john&name=smith 后,將會得到返回值 ?smith ?。

需要注意的是,在標(biāo)準(zhǔn)庫?net/http?處理中,提交的同名參數(shù)將會被轉(zhuǎn)換為字符串?dāng)?shù)組。

數(shù)組參數(shù)

數(shù)組參數(shù)提交格式形如:?k[]=v1&k[]=v2? 。

package main

import (
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/net/ghttp"
)

func main() {
	s := g.Server()
	s.BindHandler("/", func(r *ghttp.Request) {
		r.Response.Write(r.Get("array"))
	})
	s.SetPort(8199)
	s.Run()
}

執(zhí)行后,我們訪問 http://127.0.0.1:8199/?array[]=john&array[]=smith 后,將會得到返回值 ?["john","smith"]? 。

Map參數(shù)

?Map?參數(shù)提交格式形如:?k[a]=m&k[b]=n?,并且支持多級?Map?,例如:?k[a][a]=m&k[a][b]=n?。

package main

import (
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/net/ghttp"
)

func main() {
	s := g.Server()
	s.BindHandler("/", func(r *ghttp.Request) {
		r.Response.Write(r.Get("map"))
	})
	s.SetPort(8199)
	s.Run()
}

執(zhí)行后,我們訪問 http://127.0.0.1:8199/?map[id]=1&map[name]=john 后,將會得到返回值 ?{"id":"1","name":"john"} ?。

我們再試試多級?Map?,手動訪問以下地址

http://127.0.0.1:8199/?map[user1][id]=1&map[user1][name]=john&map[user2][id]=2&map[user2][name]=smith

將會得到返回值 ?{"user1":{"id":"1","name":"john"},"user2":{"id":"2","name":"smith"}} ?。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號