Spring @RequestHeader映射值包含两次标头
我们正面临一个非常奇怪的问题:在我们的端点:Spring @RequestHeader映射值包含两次标头,spring,spring-mvc,spring-boot,Spring,Spring Mvc,Spring Boot,我们正面临一个非常奇怪的问题:在我们的端点: @PostMapping(value = "/send_event_to_payment_process") @Async public void sendEvent(@Valid @RequestBody final SendEventRequestDto dto, @RequestHeader(value = TENANT) String foo) { 映射的@RequestHeader变量foo包含两次与“,”连接的vaue(“test,te
@PostMapping(value = "/send_event_to_payment_process")
@Async
public void sendEvent(@Valid @RequestBody final SendEventRequestDto dto, @RequestHeader(value = TENANT) String foo) {
映射的@RequestHeader变量foo包含两次与“,”连接的vaue(“test,test”)。如果我们使用请求上下文以编程方式读取标头:
public void sendEvent(@Valid @RequestBody final SendEventRequestDto dto, @Context final HttpServletRequest request) {
final String tenant = request.getHeader(TENANT);
我们收到正确的值(只有一次:“测试”)
有什么线索说明问题出在哪里
谢谢大家! 你在比较不同的东西 HttpServletRequest.getHeader方法始终返回一个值,即使报头有多个值。它将返回第一个(请参见方法的) Spring使用该方法获取所有值。它检索所有标题值,并根据值返回
字符串[]
或创建单个串联的字符串
要比较相同的内容,还应该使用getHeaders
方法,然后得到相同的结果。这意味着您的请求包含给定标头的2个标头值 听起来好像正在从字符串[]进行类型转换。尝试将foo参数的类型更改为String[],以查看是否得到两个单独的值您的答案也指向了正确的方向。我只是不理解Springs处理请求头的内部结构。也谢谢你的帮助!非常感谢你的帮助。这对我们帮助很大。