如何解决Feign错误解码器中的响应未获得Zalando问题自定义属性
我有两个Spring Boot组件,一个被请求的服务,以及一个通过Feign Client发送请求的主要组件。服务组件使用Zalando问题构建异常,并将其映射到主组件错误解码器中的结构中。
我的服务组件问题的创建(在Kotlin中):
@ExceptionHandler
fun handle(ex: ErrorException,request: NativeWebRequest): ResponseEntity<Problem> {
return when (ex.code) {
ErrorCodes.OPERATION_NOT_ALLOWED,ErrorCodes.QUERY_ERROR -> create(Status.BAD_REQUEST,Problem.builder()
.withDetail(ex.message)
.with("code",ex.code.name)
.withStatus(Status.BAD_REQUEST)
.build(),request)
}
}
我的主要组件中的错误解码器类:
public class ClientErrorDecoder implements ErrorDecoder {
private final ObjectMapper mapper = new ObjectMapper();
@Override
public Exception decode(String methodKey,Response response) {
try {
ClientExceptionDTO clientExDTO = mapper.readValue(response.body().asInputStream(),ClientExDTO.class);
log.debug("Exception from external service: " + clientExDTO);
return new ErrorException(clientExDTO.getDetail(),ErrorCodes.EXTERNAL_SERVICE_ERROR);
} catch (IOException e) {
throw new ErrorException("Failed to process response body.",ErrorCodes.UNPROCESSABLE_RESPONSE);
}
}
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
private static class ClientExDTO {
private String title;
private String code;
private String detail;
private String status;
}
}
我遇到的问题是主要组件的Response对象不包含自定义属性“ code”:
{"title":"Bad Request","status":400,"detail":"Exception occurred in ext service"}
我与Zaigno问题以及Feign客户一起在这里缺少什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。