Feign调用Keycloak接口出现feign.codec.DecodeException错误求助
问题解决方法
问题根源
Keycloak的/users?username={userName}接口返回的是用户数组(List
正确解决方案
- 修正Feign接口的返回类型:将返回类型改为集合或数组,匹配接口实际返回格式
- 规范查询参数的定义:不要把查询参数写在
@GetMapping的路径中,改用@RequestParam定义查询参数
修改后的Feign接口代码
@GetMapping("/users") List<UserRepresentation> getUserByUserName(@RequestParam(name = "username") String userName);
调用代码示例
如果业务逻辑中确定username唯一,可直接取列表第一个元素:
List<UserRepresentation> userList = keycloakClient.getUserByUserName("tommy"); UserRepresentation userByUserName = userList.isEmpty() ? null : userList.get(0);
补充说明
原接口中@GetMapping("/users?username={userName}")的写法不符合规范,Feign会将?username={userName}视为路径的一部分,而非查询参数,虽然可能能发起请求,但这种写法不严谨,改用@RequestParam才是正确定义查询参数的方式。
内容的提问来源于stack exchange,提问作者kernel
相关产品推荐
相关产品推荐

