Golang Go语言中beego get 请求参数为啥会自动转小写
Golang Go语言中beego get 请求参数为啥会自动转小写
Route:
beego.ControllerComments{
Method: "Get",
Router: `/:userNAME`,
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Filters: nil,
Params: nil}
日志:
aaa=> &{0xc000138fc0 <nil> [:username] [hjkhsbnmn123] map[RouterPattern:/v1/object/:userNAME] {{0 0} 0 0 0 0} [] <nil>}2019/12/03 14:24:28.292 [D] [server.go:2802] | 127.0.0.1| 200 | 951.8µs| match| GET /v1/object/hjkhsbnmn123 r:/v1/object/:userNAME
发现,参数竟然被转小写了...
更多关于Golang Go语言中beego get 请求参数为啥会自动转小写的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在 route 文件里有个 beego.AutoPrefix()函数,然后
func (p ControllerRegister) AddAutoPrefix(prefix string, c ControllerInterface) {
reflectVal := reflect.ValueOf©
rt := reflectVal.Type()
ct := reflect.Indirect(reflectVal).Type()
controllerName := strings.TrimSuffix(ct.Name(), “Controller”)
for i := 0; i < rt.NumMethod(); i++ {
if !utils.InSlice(rt.Method(i).Name, exceptMethod) {
route := &ControllerInfo{}
route.routerType = routerTypeBeego
route.methods = map[string]string{"": rt.Method(i).Name}
route.controllerType = ct
pattern := path.Join(prefix, strings.ToLower(controllerName), strings.ToLower(rt.Method(i).Name), “")
patternInit := path.Join(prefix, controllerName, rt.Method(i).Name, "”)
patternFix := path.Join(prefix, strings.ToLower(controllerName), strings.ToLower(rt.Method(i).Name))
patternFixInit := path.Join(prefix, controllerName, rt.Method(i).Name)
route.pattern = pattern
for m := range HTTPMETHOD {
p.addToRouter(m, pattern, route)
p.addToRouter(m, patternInit, route)
p.addToRouter(m, patternFix, route)
p.addToRouter(m, patternFixInit, route)
}
}
}
}
patternFix := path.Join(prefix, strings.ToLower(controllerName), strings.ToLower(rt.Method(i).Name))
这句话
更多关于Golang Go语言中beego get 请求参数为啥会自动转小写的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
#1 大佬牛批, 新手看半天没看懂
#1 感觉有点坑, beego 的文档没找到… 难道 go 圈的人, 都是看源码的吗
深夜跟楼主撩骚一下,想请问一下这个冬天收不收实习生?用 Go 接过一个客服系统,算法竞赛选手,拿过全国二等奖
在Golang中使用Beego框架时,如果遇到GET请求参数自动转为小写的情况,这通常与URL查询字符串的处理有关。以下是一些可能的原因和解释:
-
URL标准化:Web服务器或框架在处理URL时,可能会将查询参数名标准化为小写。这主要是为了确保参数名的一致性,避免大小写差异导致的处理错误。虽然HTTP标准本身不强制要求参数名大小写敏感,但不同服务器和框架实现可能有所不同。
-
Beego框架特性:Beego框架在处理GET请求参数时,可能默认采用了将参数名转为小写的策略。这是为了简化参数处理,确保无论客户端如何发送参数名(大写、小写或混合),服务器端都能以统一的方式访问它们。
-
解决方案:
- 确认需求:首先确认你的应用是否真的需要区分参数名的大小写。如果不需要,接受这种默认行为可能更简单。
- 自定义处理:如果确实需要区分大小写,可以在Beego的控制器中手动解析原始查询字符串,而不是依赖框架的自动解析功能。
- 查阅文档和社区:查阅Beego的官方文档和社区讨论,看看是否有其他开发者遇到并解决了类似问题。
总之,GET请求参数自动转为小写可能是框架为了简化处理而采取的默认策略。在开发过程中,了解并适应这些框架特性可以帮助你更有效地使用它们。