HTTP 验证器

请先阅读 验证器 章节,HTTP 验证器基于验证器扩展,基本使用方式相似。

首先,HTTP 验证器是@HttpValidation注解,它只能写在方法上。写了这个注解,在action方法调用前会触发验证,验证失败同样的抛出异常

另外,验证规则注解,如@Required等的name属性用法也略有不同。

你可以使用$get$post$body$headers$cookie$session$this后面跟上.参数名指定参数,其中getpost自然不用多说,这body的用处就是,比如参数是以jsonbody传给你的,他会自动给你json_decode,你用$body就可以指定了。

$this 代表是当前控制器对象。

还有一个@ExtractData注解,它可以把get/post/body中的参数导出到action方法的参数中。

@ExtractData注解可以独立使用,不依赖@HttpValidation注解,但只能在控制器中使用。

如下方法所示:

  1. /**
  2. * http参数验证测试
  3. *
  4. * @Action
  5. *
  6. * @HttpValidation
  7. *
  8. * @Required(name="$get.id", message="用户ID为必传参数")
  9. * @Integer(name="$get.id", min="1", message="用户ID不符合规则")
  10. * @Required(name="$get.name", message="用户姓名为必传参数")
  11. * @Text(name="$get.name", min="2", message="用户姓名长度不得少于2位")
  12. * @Required(name="$get.age", default=-1)
  13. *
  14. * @ExtractData(name="$get.id", to="id")
  15. * @ExtractData(name="$get.name", to="name")
  16. * @ExtractData(name="$get.age", to="age")
  17. *
  18. * @return void
  19. */
  20. public function httpValidation($id, $name, $age)
  21. {
  22. return compact('id', 'name', 'age');
  23. }