介绍
在本篇文章中,我们将研究如何在 Spring Rest Controller 中访问 HTTP 头信息。
首先,我们将使用 @RequestHeader 注解分别或同时读取 HTTP 头信息。
之后,我们将深入研究 @RequestHeader 的属性。
获取 HTTP 头信息
获取单个 HTTP 头信息
如果我们需要访问一个特定的 HTTP 头信息,我们可以用头名配置 @RequestHeader:
@GetMapping("/greeting")
public ResponseEntity<String> greeting(@RequestHeader("accept-language") String language) {
// 使用 language 变量的代码
return new ResponseEntity<String>(greeting, HttpStatus.OK);
}
然后,我们可以使用传递给我们方法的变量来访问该值。 如果在请求中找不到名为 accept-language 的头信息,则该方法将返回“400 Bad Request”错误。
我们的头信息不一定是字符串。例如,如果我们知道我们的头是一个数字,我们可以声明我们的变量为一个数字类型:
@GetMapping("/double")
public ResponseEntity<String> doubleNumber(@RequestHeader("my-number") int myNumber) {
return new ResponseEntity<String>(String.format("%d * 2 = %d",
myNumber, (myNumber * 2)), HttpStatus.OK);
}
获取多个 HTTP 头信息
如果我们不确定会出现哪些头文件,或者我们需要的头文件比方法签名中需要的多,我们可以使用 @RequestHeader 注释,而不需要特定的名称。
对于变量类型,我们有几种选择:Map,MultiValueMap 或 HttpHeaders 对象。