你可以使用 @RequestHeader注解,将请求头与控制器中的方法参数绑定。

    考虑一下下面的请求,其中有头信息:

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

    下面的例子获取 Accept-Encoding 和 Keep-Alive 头的值:

    1. @GetMapping("/demo")
    2. public void handle(
    3. @RequestHeader("Accept-Encoding") String encoding,
    4. @RequestHeader("Keep-Alive") long keepAlive) {
    5. //...
    6. }

    如果目标方法的参数类型不是 String,类型转换将自动应用。参见 类型转换

    当在 Map<String, String>MultiValueMap<String, String>HttpHeaders参数上使用 @RequestHeader注解时,该 Map 被填充了所有的头信息值。

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