我知道我可以使用ResponseBodyAdvice,它使我能够拦截调用(就在编写响应并允许访问原始http响应之前)。像here
但是,如何配置不应该在所有端点上都这样做?

最佳答案

如果您不喜欢通用方法,那为什么不直接在特定的控制器方法中添加自定义响应标头,例如就像这里https://www.techiedelight.com/add-header-to-response-spring-boot/。除此之外,您仍然可以使用ResponseBodyAdvice方法,但必须以编程方式进行过滤,例如通过在ResponseBodyAdvice实现中比较请求的路径(URL)(在方法beforeBodyWrite中,您可以访问请求来确定路径):

T beforeBodyWrite(T body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response)


另请参见此处的示例:https://mtyurt.net/post/spring-modify-response-headers-after-processing.html

08-28 14:34