【问题标题】:No body in ResponseEntity when using spring annotation @ResponseStatus使用spring注解@ResponseStatus时ResponseEntity中没有正文
【发布时间】:2016-12-15 21:55:07
【问题描述】:

我有一个使用 spring 注释抛出异常的端点,这是我的异常代码:

@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public class MyException extends BaseApiException{

public MyException (String variable){

super("variable :"+variable+" can not be updated.");
}
}

当我使用邮递员测试 Rest 端点时,我得到了正确的结果和正确的状态码:

{
"errorType": "MyExption",
"message": "variable : XYZ can not be updated."
}

我的问题是当我尝试使用 restTemplate 调用服务时,我没有在响应中收到正文,这是我的代码:

ResponseEntity<Document> response;
RestTemplate restTemplate = new RestTemplate();
response = restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.POST, entity, Document.class);

【问题讨论】:

    标签: spring rest


    【解决方案1】:

    你需要定义一个错误处理程序来提取这个

    public class MyResponseErrorHandler implements ResponseErrorHandler {
        private static final Logger log = LoggerFactory.getLogger(MyResponseErrorHandler.class);
    
        @Override
        public void handleError(ClientHttpResponse response) throws IOException {
            //here you should be able to get //response.getBody()   
            log.error("Response error: {} {}", response.getStatusCode(), response.getStatusText());
        }
    
        @Override
        public boolean hasError(ClientHttpResponse response) throws IOException {
            return isError(response.getStatusCode());
        }
    
        public static boolean isError(HttpStatus status) {
            HttpStatus.Series series = status.series();
        return (HttpStatus.Series.CLIENT_ERROR.equals(series)
                || HttpStatus.Series.SERVER_ERROR.equals(series));
       }
    
    
    }
    
    
    RestTemplate template = new RestTemplate();
    template.setErrorHandler(new MyResponseErrorHandler());
    

    【讨论】:

      猜你喜欢
      • 2017-08-05
      • 1970-01-01
      • 2018-03-14
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      相关资源
      最近更新 更多