GoFrame 請(qǐng)求輸入-自定義變量

2022-04-13 15:39 更新

開發(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


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)