如何去除Feign Client响应头中的括号?
Feign Client响应头值带方括号的原因及解决办法
原因
HTTP协议允许同一个响应头字段包含多个值,因此Feign(以及Spring的ResponseEntity)会将每个头字段的值存储为List<String>类型。当你直接打印response.headers时,列表的默认toString()方法会把元素用方括号[]包裹起来输出——并不是原始响应头带括号,而是列表转字符串的格式导致的。
解决办法
1. 获取单个头字段的第一个值(确定只有一个值时用)
既然你确认原始值是单个字符串,直接用getFirst()方法取列表的第一个元素即可:
val response: ResponseEntity<String> = externalService.send(request) val urlHeaderValue = response.headers.getFirst("URL") logger.debug("response.headers URL: $urlHeaderValue")
这样输出就会是response.headers URL: some_value,没有方括号。
2. 处理多值场景(如果头可能有多个值)
如果不确定头字段是否存在多个值,可以遍历列表拼接成需要的格式:
val response: ResponseEntity<String> = externalService.send(request) val urlHeaders = response.headers["URL"] val urlHeaderValue = urlHeaders?.joinToString(", ") // 用逗号分隔多个值 logger.debug("response.headers URL: $urlHeaderValue")
内容的提问来源于stack exchange,提问作者ever alian
相关产品推荐
相关产品推荐

