Categories: GoFrame 教程

GoFrame 请求输入-自定义变量

开发者可以在请求中自定义一些变量设置,自定义变量的获取优先级是最高的,可以覆盖原有的客户端提交参数。

自定义变量往往也可以做请求流程的变量共享,但是需要注意的是该变量会成为请求参数的一部分,是对业务执行流程公开的变量。

方法列表:

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

自定义变量可以通过​SetParam​方法进行设置。自定义变量的获取可以通过请求参数的获取方法获得到,例如:​Get/GetVar/GetMap​等等,也可以通过特定的自定义变量方法获取到​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()
}

可以看到,我们可以通过​SetParam​和​GetParam​来设置和获取自定义的变量,该变量生命周期仅限于当前请求流程。

执行后,访问 http://127.0.0.1:8199/ ,页面输出内容为:

set name
set site
GoFrame: https://goframe.org

唐伯虎点蚊香

前端小白,想各位学习!

Share
Published by
唐伯虎点蚊香

Recent Posts

聊聊vue3中的defineProps

在Vue 3中,defineP…

1 周 ago

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

2 周 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

3 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

4 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

1 月 ago

Vue3:手动清理keep-alive组件缓存的方法

Vue3中手动清理keep-a…

1 月 ago