在 Spring 控制器中将所有 @RequestHeader 键值作为 Map 访问

问题描述 投票:0回答:3

我正在尝试找到一种方法,可以将 @RequestHeader 注释中的所有键值填充到映射中。 我尝试用 Google 搜索,但我所能找到的只是一种将每个键值映射到一个参数的方法。

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {

    @RequestMapping(value = "/hello.htm")
    public String hello(@RequestHeader(value="User-Agent") String userAgent)

        //..
    }
}

但我想实现这样的目标。

@RequestHeader 映射 headerParam;

这样我就可以遍历 Map 并根据需要使用所有标头值。

spring spring-mvc
3个回答
28
投票

您可以按照以下方式实现 -

@RequestMapping(value = "/hello.htm")
public String hello(@RequestHeader HttpHeaders httpHeaders){
    Map<String,String> headerMap=httpHeaders.toSingleValueMap();
    //TODO httpHeaders will have many methods
}

希望对您有帮助。 谢谢。


1
投票

如果你使用 Spring Boot,下面的映射就可以了

@RequestHeader Map headers

@PostMapping(value = "/customer", produces = { "application/json" })
ResponseEntity<String> findName(@RequestHeader Map<String, String> headers) {

}


0
投票

您可以简单地使用下面的代码。

@RequestMapping(value = "/hello.htm")
public String hello(@RequestHeader Map<String,String> headersMap){
    // Use the parameter **headersMap.get(<Key>)** to access the values
}
© www.soinside.com 2019 - 2024. All rights reserved.