swoft-cloud / swoft

🚀 PHP Microservice Full Coroutine Framework
https://swoft.org
Apache License 2.0
5.58k stars 788 forks source link

swoft2.0.6的验证器为什么不支持GET请求的参数校验的? #1044

Closed stltd closed 4 years ago

stelin commented 4 years ago

你要指定get方式使用,默认是post,具体看文档

stltd commented 4 years ago

image 是如图,type="ValidateType::GET"吗?是这样的话,还是验证不了

stelin commented 4 years ago

你版本

stltd commented 4 years ago

image 是如图,type="ValidateType::GET"吗?是这样的话,还是验证不了

你版本

swoft2.0.6

inhere commented 4 years ago

你这里注解写错了, ValidateType::GET 必须引入对应的类,同时这里不能用引号"引起来

该这样:

/**
 * @Validate(validator="TestValidator", type=ValidateType::GET)
 */
stelin commented 4 years ago

你使用方式不正确,亲测没问题

stltd commented 4 years ago

可以了,谢谢。 总结一下原因: 1、开始没有引用ValidateType类,这样写:type=ValidateType::GET时,控制器报错,可以就卡在这里; 2、当GET请求验证时,要获取请求参数值时,只能通过方法:$request->getParsedQuery()获取。 3、当POST请求验证时,要获取请求参数值时,只能通过方法:$request->getParsedBody()获取。

提个疑问:为什么POST请求时,验证器不能同时验证Query参数和Body参数?