Spring Boot 统一添加响应头的几种方式
Spring Boot 大约 2244 字HttpServletResponse 方式
@RestController
public class HelloController {
@GetMapping("/hello")
public String viewController(HttpServletResponse response){
response.setHeader("header name", "header value");
return "hello";
}
}
ResponseEntity 方式
@RestController
public class HelloController {
@GetMapping("/hello")
public ResponseEntity<String> restController(){
return ResponseEntity.ok()
.header("header name", "header value")
.body("hello");
}
}
Filter 方式
OncePerRequestFilter
@Component
public class MyResponseHeaderFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
response.addHeader("header name", "header value");
filterChain.doFilter(request, response);
}
}
Servlet Filter
@WebFilter(urlPatterns = {"/*"})
@Component
public class FirstFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
res.addHeader("header name", "header value");
chain.doFilter(req, res);
}
}
ResponseBodyAdvice
ResponseBodyAdvice
只适用于JSON
格式的Content-Type
。
@ControllerAdvice
public class HeaderModifierAdvice implements ResponseBodyAdvice<Object> {
@Override
public boolean supports(final MethodParameter returnType, final Class<? extends HttpMessageConverter<?>> converterType) {
return true;
}
@Override
public Object beforeBodyWrite(Object body,
MethodParameter returnType,
MediaType selectedContentType,
Class<? extends HttpMessageConverter<?>> selectedConverterType,
ServerHttpRequest request,
ServerHttpResponse response) {
response.getHeaders().add("header name", "header value");
return body;
}
}
阅读 312 · 发布于 2023-02-09
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
Go 操作 PostgreSQL阅读 3507
-
MySQL 之关键字和保留字阅读 1153
-
MySQL 条件查询阅读 1069
-
Java 语法糖 - try with resource阅读 750
-
Angular error TS2564: Property 'xx' has no initializer and is not definitely assigned in the constructor.阅读 692
-
Go 中的指数符号 e阅读 2699
-
使用 LuaRocks 管理 Lua 依赖阅读 3291
-
JMeter 使用 Response Assertion 自定义错误信息阅读 1671
-
Spring Boot NoClassDefFoundError: com/mongodb/connection/DefaultClusterFactory阅读 6030
-
Linux 常用命令之进程相关命令阅读 1708