@RequestHeader要求请求参数和值的属性行为

时间:2016-06-22 05:55:52

标签: spring rest spring-mvc

我们可以使用@RequestHeader吗

来强制使用标头参数,而不是值

例如,如果我们使用,

@RequestHeader(value = "abc", required = true) 

参数和它的值都必须存在。

编辑: 假设我打电话给某个休息api有上面的请求标题参数" abc"但没有价值。所以在这种情况下,我能够成功调用其余的api,因为我已经调用了" abc"标题参数即使我没有输入值。由于一些治理工具规则,我需要有一个特定的标题参数,但我不希望强制用户输入任何值。

2 个答案:

答案 0 :(得分:1)

目前@RequestHeader没有提供额外的工具来检查参数的值是否为强制性,即不为空。

以下是Spring Doc

的可用字段
  • defaultValue:用作后备的默认值。
  • name:要绑定的请求标头的名称。
  • required:标头是否必需。
  • value:name()的别名

所以你可以做的是在@RequestHeader的帮助下读取参数或者注入一个HttpServletRequest请求,通过request.getHeader(...)读取并检查控制器方法内部是否存在该值然后可以调用方法执行必要的逻辑。

虽然您可以在@RequestHeader(value = "Authorization", required = true) String authorization)

的必需属性的帮助下确保参数存在

答案 1 :(得分:0)

正如@Mudassar所说,@RequestHeader没有提供额外的功能来检查参数的值是否是强制性的,即不为空。

它与此问题有关:https://github.com/spring-projects/spring-framework/issues/23939

我使用创建的注释https://github.com/armandoalmeida/request-header-required-non-null

针对此问题开发了解决方法

希望我能对您有所帮助!