@RequestHeader
注释与HttpServletRequest
的读取标题数据之间的区别是什么?
答案 0 :(得分:3)
使用Spring @RequestHeader
的优点是它会自动抛出异常
HTTP状态400 - 如果未在输入请求中发送标头(通过设置required=true
),则缺少类型的方法参数的请求标头“X”。示例用法如下所示:
@RequestMapping(method=RequestMethod.GET)
public String users(@RequestHeader(required=true)String myHeader, Model model) {
//your Code
}
如果您使用@RequestHeader
,也可以设置标题的默认值,您可以参考here
我们需要手动检查标头值!=null
的条件,抛出异常或设置默认值,如果您使用HttpServletRequest
,这将使您的代码变得冗长。
答案 1 :(得分:2)
性能没有区别。使用@RequestHeader
比HttpServletRequest.getHeader()
更方便。
这类似于@RequestParam
和HttpServletRequest.getParameter()
。
Spring完成了将请求Headers,Parameters转换为方法参数的工作,以便您可以避免使用样板代码。
有一个名为MethodArgumentResolver
的Spring RequestHeaderMethodArgumentResolver
实际上使用HttpServletRequest.getHeader()
来获取标题。