情景1:获取单个请求头
1 2 3 4 | @RequestMapping ( "/getSingleHeader" ) public void getSingleHeader( @RequestHeader ( "user-id" ) String userId){ } |
情景2:获取所有请求头
方法1:Map
如果使用Map接收,若请求头具有一个以上的值,我们只得到第一个值。这等效于在MultiValueMap上使用getFirst方法。
1 2 3 4 | @RequestMapping ( "/getAllHeaders" ) public void listAllHeaders( @RequestHeader Map<String, String> headers) { } |
方法2:MultiValueMap
如果我们的标头可能有多个值,我们可以将它们作为MultiValueMap获得
1 2 3 4 | @RequestMapping ( "/listHeaders" ) public void listHeaders( @RequestHeader MultiValueMap<String, String> headers) { } |
方法3:HttpHeaders
HttpHeaders 内部是通过 MultiValueMap<String, String>实现的。
1 2 3 4 | @RequestMapping ( "/listHeaders" ) public void listHeaders( @RequestHeader HttpHeaders headers) { } |
情景3:通过request获取请求头
只要获取了request(HttpServletRequest),那就可以获得请求头了。
- 获得【request】的方法见:https://knife.blog.csdn.net/article/details/108372719
- 通过request获取【请求头】的方法见:https://knife.blog.csdn.net/article/details/126271292
1 2 3 | request.getHeader( "token" ); // 获取一个指定头字段的值,如果请求消息中没有包含指定的头字段,getHeader()方法返回null; // 如果请求消息中包含有多个指定名称的头字段,getHeader()方法返回其中第一个头字段的值 |