如何在Spring Boot 1.5中定义@RestControllerAdvice的返回类型

时间:2018-08-24 07:37:22

标签: spring-boot error-handling spring-restcontroller

我们正在使用多个@RestController构建RESTful API,这些API返回各种对象,包括字节数组(实际上是application / pdf)。

发生异常时,我们将处理带有@RestControllerAdvice且返回自定义ErrorView对象的对象。 Spring仍然坚持将那些渲染为application / pdf,这当然是不可能的。客户端正在accept头中发送application / json,但这似乎无济于事。任何指针如何解决此问题?

1 个答案:

答案 0 :(得分:0)

好的,我犯了一个错误,我应该分享。

基本上,大多数时候,Spring和客户端之间的内容类型协商就像是一种魅力。如果客户端接受(像我们的应用程序一样)“ application / pdf,application / json”,那么spring将尝试使用它来处理@RestController函数返回值的所有响应。当然,除了您明确告诉Spring仅产生某种类型的响应(例如,与

@GetMapping(value = "render/document/{docId}", produces = arrayOf(MediaType.APPLICATION_PDF_VALUE))

将其更改为

@GetMapping(value = "render/document/{docId}", produces = arrayOf(MediaType.APPLICATION_PDF_VALUE, MediaType.APPLICATION_JSON_VALUE))

ErrorView按预期方式呈现为JSON。