我们可以使用@RequestHeader吗
来强制使用标头参数,而不是值例如,如果我们使用,
@RequestHeader(value = "abc", required = true)
参数和它的值都必须存在。
编辑: 假设我打电话给某个休息api有上面的请求标题参数" abc"但没有价值。所以在这种情况下,我能够成功调用其余的api,因为我已经调用了" abc"标题参数即使我没有输入值。由于一些治理工具规则,我需要有一个特定的标题参数,但我不希望强制用户输入任何值。
答案 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
针对此问题开发了解决方法希望我能对您有所帮助!