对于最新稳定版本,请使用 Spring Framework 7.0.6spring-doc.cadn.net.cn

@RequestHeader

你可以使用 @RequestHeader 注解将请求头绑定到控制器中的方法参数上。spring-doc.cadn.net.cn

以下示例展示了一个带有请求头的请求:spring-doc.cadn.net.cn

Host                    localhost:8080
Accept                  text/html,application/xhtml+xml,application/xml;q=0.9
Accept-Language         fr,en-gb;q=0.7,en;q=0.3
Accept-Encoding         gzip,deflate
Accept-Charset          ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive              300

以下示例获取 Accept-EncodingKeep-Alive 请求头的值:spring-doc.cadn.net.cn

@GetMapping("/demo")
public void handle(
		@RequestHeader("Accept-Encoding") String encoding, (1)
		@RequestHeader("Keep-Alive") long keepAlive) { (2)
	//...
}
1 获取 Accept-Encoding 请求头的值。
2 获取 Keep-Alive 请求头的值。
@GetMapping("/demo")
fun handle(
		@RequestHeader("Accept-Encoding") encoding: String, (1)
		@RequestHeader("Keep-Alive") keepAlive: Long) { (2)
	//...
}
1 获取 Accept-Encoding 请求头的值。
2 获取 Keep-Alive 请求头的值。

如果目标方法参数类型不是 String,则会自动应用类型转换。参见类型转换spring-doc.cadn.net.cn

当在 @RequestHeader 注解用于 Map<String, String>MultiValueMap<String, String>HttpHeaders 类型的参数时,该映射将被填充所有请求头的值。spring-doc.cadn.net.cn

内置支持将逗号分隔的字符串转换为字符串数组或集合,或其他类型转换系统已知的类型。例如,使用 @RequestHeader("Accept") 注解的方法参数可以是 String 类型,也可以是 String[]List<String> 类型。