我正在使用RestTemplate构建一个(大部分)通过API的查询各种不同服务的API。关于错误和参数丢失,目标API会提供错误消息,这些消息在响应中会丢失,我想使用相同的HttpCode传递这些消息。示例:
const task = {
tasks: [
{ text: 'grocery shopping', completed: true },
{ text: 'clean yard', completed: false},
{ text: 'film course', completed: false,}
],
getTaskTodo()
{
return this.tasks.filter((item) => !item.completed);
}
}
console.log(task.getTaskTodo());
curl -XPOST sourceapi:/...
如果我对RestTemplate做同样的操作,它会抛出异常,并且消息为null,看起来像这样:
{"type":"/errors/failed","title":"Entity Exists","details":"Entity with name \"test\" already exists","status":409}
curl -XPOST testapi:/...
如何将错误代码以及该对象的错误代码传递给“客户端”。 (甚至记录下来也将是一个开始...)
我有一个409 null
类,已经对其进行了缓存,但是消息实际上只是@ControllerAdvice
409 null
在使用RestTemplateBuilder构建模板时,是否可以添加ErrorParser或其他内容?
答案 0 :(得分:2)
您寻求的不是getResponseBodyAsString()
方法(从RestClientResponseException
继承)吗?
@ExceptionHandler(value = {HttpClientErrorException.class})
public ResponseEntity<Object> clientErrorException(HttpClientErrorException ex) {
return ResponseEntity.status(ex.getStatusCode()).body(ex.getResponseBodyAsString());
}
或者也许getResponseBodyAsByteArray()
更合适。