gpt4 book ai didi

java - 如何注册在消息转换器之前工作的RestController拦截器?

转载 作者:行者123 更新时间:2023-12-02 11:34:04 25 4
gpt4 key购买 nike

spring mvc 中是否有任何方法可以注册拦截器,在序列化之前拦截 RestController 返回值?

类似于@RestControllerAdvice,但用于返回值。

我知道我可以提出周围调用建议,但我认为应该有一些标准的方法来做到这一点。

最佳答案

HandlerInterceptor

postHandle 方法获取 HttpServletResponse 对象,此时 HttpMessageConverter 已序列化响应。所以据我所知,你不会明白这一点。但是Rest Controller Advice可以实现ResponseBodyAdvice来在HttpMessageConverter之前处理响应。 Spring 4.3.x 文档 interceptors 。示例工作代码。

型号

public class Sample {
private String property;
// getter and setter omitted
}

休息 Controller

@RestController
public class SampleController {

@GetMapping
public Sample get() {
Sample s = new Sample();
s.setProperty("Some Property");
return s;
}

}

休息 Controller 建议

@RestControllerAdvice
public class SampleAdvice implements ResponseBodyAdvice<Sample>{

@Override
public Sample beforeBodyWrite(Sample sample, MethodParameter arg1, MediaType arg2,
Class<? extends HttpMessageConverter<?>> arg3, ServerHttpRequest arg4, ServerHttpResponse arg5) {
// Get a handle to your response object and make changes here
sample.setProperty("Overridden Property");
return sample;
}

@Override
public boolean supports(MethodParameter arg0, Class<? extends HttpMessageConverter<?>> arg1) {
return true;
}
}

关于java - 如何注册在消息转换器之前工作的RestController拦截器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49083281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com