我想完成的事#
我希望能够在特定端点方法返回其值后处理对Spring RestController的HTTP请求的结果。例如,我有:
GET /customer/{id}
这通常只返回一个自定义资源,我在RestController
中定义的端点只返回一个customer对象。
我希望能够修改这个返回结果的HttpEntity
响应。特别是,我希望在这个后处理器中完成所有的HATEOAS工作,并将其 Package 在我的父对象中。
什么是最好的方法来完成这一点?我会包括我已经尝试过的,但我想不出任何方法可以做到这一点干净。
在实现JAX-RS的框架中,您需要做的就是实现ContainerResponseFilter
接口,然后将其添加到REST服务器中。
Spring REST中是否存在ContainerResponseFilter
的概念?
2条答案
按热度按时间rggaifut1#
我想,你需要的是ResponseBodyAdvice。
根据文件,
允许在执行@ResponseBody或ResponseEntity控制器方法之后、使用HttpMessageConverter写入主体之前自订回应。
实现可以直接用RequestMappingHandlerAdapter和ExceptionHandlerExceptionResolver注册,或者更可能用@ControllerAdvice注解,在这种情况下,它们将由两者自动检测。
您关于
OutputStream
其他问题将得到解决,身体将直接可用,因为它是用
@ControllerAdvice
注解的,所以会自动为您的控制器检测到它。vlju58qv2#
您可以编写一个SpringMVC拦截器,并将其置于所需的Controller方法之上,您可以使用
postHandle
方法来执行您想要执行的操作。看看这个post