休息模板传递原始消息

时间:2019-09-21 16:46:48

标签: spring-boot spring-mvc resttemplate

我正在使用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或其他内容?

1 个答案:

答案 0 :(得分:2)

您寻求的不是getResponseBodyAsString()方法(从RestClientResponseException继承)吗?

  @ExceptionHandler(value = {HttpClientErrorException.class})
  public ResponseEntity<Object> clientErrorException(HttpClientErrorException ex) {
    return ResponseEntity.status(ex.getStatusCode()).body(ex.getResponseBodyAsString());
  }

或者也许getResponseBodyAsByteArray()更合适。