首页 > 解决方案 > Spring Boot - 是否可以根据成功从 Web 服务返回文件或 xml?

问题描述

我的任务是创建一个从 Azure 存储帐户获取文件的 Web 服务。

成功时:将文件作为有效负载返回

出错时:返回 xml 响应。

xml 响应将包含请求的副本、错误代码和消息等,因为用户需要一个有用的错误消息来解释发生了什么。

我可以找到有关如何返回单个对象/媒体类型的说明,但不能找到取决于条件的多种类型。

这可能吗?

标签: javaspring-boot

解决方案


由于 Abhijeet 的评论,解决了异常处理程序 - 添加 contentType 或默认返回 JSON 很重要

@ControllerAdvice
public class MyExceptionHandler {

  @ResponseStatus(HttpStatus.I_AM_A_TEAPOT)
  @ExceptionHandler(MyException.class)
  @ResponseBody
  ResponseEntity<?> exceptionHandler(MyException e){
      InvoiceArchiveResponse responseObject = e.getResponseObject();
      return ResponseEntity.badRequest()
              .contentType(MediaType.parseMediaType("application/xml"))
              .body(responseObject);
  }
}

谢谢!


推荐阅读