You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot如何为单个端点设置响应头(不返回ResponseEntity)

解决方案:无需返回ResponseEntity添加单个端点响应头

你之前用@GetMapping(headers = "Cache-Control=max-age=3600")的方式是错误的——这个headers属性是用来匹配请求头的,只有当请求携带了该指定头时,这个方法才会被触发,所以没带这个头的请求会出现404,它根本不是用来设置响应头的。

要在不修改返回类型为ResponseEntity的前提下给单个端点加响应头,最简单的方式是在方法参数中注入HttpServletResponse,直接通过它设置响应头:

@RequiredArgsConstructor
@RestController
@RequestMapping("/dds/users")
public class TypeController {
    private final UserService userService;
    private final UserMapper userMapper;

    @GetMapping()
    public List<UserFullDto> getAll(HttpServletResponse response) {
        // 设置响应头
        response.setHeader("Cache-Control", "max-age=3600");
        return userService.getAll().stream().map(userMapper::mapToFullDto).toList();
    }
}

另外还有一种方式是使用@ControllerAdvice结合ResponseBodyAdvice,但这种方式更适合批量处理多个端点,如果你只需要给这一个端点加头,上面的HttpServletResponse方式最直接。

内容的提问来源于stack exchange,提问作者Bjop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:24:58