W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
開發(fā)者可以在請(qǐng)求中自定義一些變量設(shè)置,自定義變量的獲取優(yōu)先級(jí)是最高的,可以覆蓋原有的客戶端提交參數(shù)。
自定義變量往往也可以做請(qǐng)求流程的變量共享,但是需要注意的是該變量會(huì)成為請(qǐng)求參數(shù)的一部分,是對(duì)業(yè)務(wù)執(zhí)行流程公開的變量。
方法列表:
func (r *Request) SetParam(key string, value interface{})
func (r *Request) GetParam(key string, def ...interface{}) interface{}
func (r *Request) GetParamVar(key string, def ...interface{}) *gvar.Var
自定義變量可以通過(guò)?SetParam
?方法進(jìn)行設(shè)置。自定義變量的獲取可以通過(guò)請(qǐng)求參數(shù)的獲取方法獲得到,例如:?Get/GetVar/GetMap
?等等,也可以通過(guò)特定的自定義變量方法獲取到?GetParam/GetParamVar
?。
使用示例:
package main
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
// 前置中間件1
func MiddlewareBefore1(r *ghttp.Request) {
r.SetParam("name", "GoFrame")
r.Response.Writeln("set name")
r.Middleware.Next()
}
// 前置中間件2
func MiddlewareBefore2(r *ghttp.Request) {
r.SetParam("site", "https://goframe.org")
r.Response.Writeln("set site")
r.Middleware.Next()
}
func main() {
s := g.Server()
s.Group("/", func(group *ghttp.RouterGroup) {
group.Middleware(MiddlewareBefore1, MiddlewareBefore2)
group.ALL("/", func(r *ghttp.Request) {
r.Response.Writefln(
"%s: %s",
r.GetParamVar("name").String(),
r.GetParamVar("site").String(),
)
})
})
s.SetPort(8199)
s.Run()
}
可以看到,我們可以通過(guò)?SetParam
?和?GetParam
?來(lái)設(shè)置和獲取自定義的變量,該變量生命周期僅限于當(dāng)前請(qǐng)求流程。
執(zhí)行后,訪問(wèn) http://127.0.0.1:8199/ ,頁(yè)面輸出內(nèi)容為:
set name
set site
GoFrame: https://goframe.org
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: