我们正在使用多个@RestController
构建RESTful API,这些API返回各种对象,包括字节数组(实际上是application / pdf)。
发生异常时,我们将处理带有@RestControllerAdvice
且返回自定义ErrorView
对象的对象。 Spring仍然坚持将那些渲染为application / pdf,这当然是不可能的。客户端正在accept头中发送application / json,但这似乎无济于事。任何指针如何解决此问题?
答案 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。