ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Spring MVC 的 @RequestHeader 注解用法

Spring MVC 的 @RequestHeader 注解用法

@RequestHeader是 Spring MVC 中用于访问 HTTP 请求头的核心注解,它提供了一种简洁高效的方式将请求头信息绑定到控制器方法参数上。

属性类型默认值说明
value/nameString“”请求头名称
requiredbooleantrue是否必须存在
defaultValueStringValueConstants.DEFAULT_NONE默认值
1. 基本用法
@GetMapping("/api") public ResponseEntity<?> getData( @RequestHeader("X-Token") String token) { // 使用请求头中的token return dataService.fetchData(token); }
2. 多值请求头处理
@GetMapping("/content") public String getContent( @RequestHeader("Accept") String[] acceptTypes) { // 处理多个接受类型 return contentService.resolveContent(acceptTypes); }
3. 可选请求头与默认值
@PostMapping("/submit") public ResponseEntity<?> submit( @RequestHeader(value = "X-Request-Id", required = false) String requestId, @RequestHeader(value = "X-Version", defaultValue = "1") int version) { // requestId为可选,version默认为1 return processingService.process(requestId, version); }
4. 绑定到 Map
@GetMapping("/analytics") public Map<String, String> analyzeHeaders( @RequestHeader Map<String, String> headers) { // 包含所有请求头的Map return analyticsService.analyze(headers); }

使用场景

1. API 版本控制
@GetMapping("/users") public ResponseEntity<?> getUsers( @RequestHeader("API-Version") int version) { if (version >= 2) { return ResponseEntity.ok(userService.findAllV2()); } else { return ResponseEntity.ok(userService.findAllV1()); } }
2. 内容协商
@GetMapping(value = "/data", produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}) public Data getData( @RequestHeader("Accept") String accept) { if (accept.contains(MediaType.APPLICATION_XML_VALUE)) { return dataService.getDataInXml(); } else { return dataService.getDataInJson(); } }
3. 权限认证
@PostMapping("/admin") public ResponseEntity<?> adminAction( @RequestHeader("Authorization") String token) { if (!authService.validateToken(token)) { return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build(); } return ResponseEntity.ok(adminService.performAction()); }

请求头使用规范

请求头典型用途示例
Authorization身份认证Bearer令牌
Accept内容协商application/json
Content-Type请求体类型application/json
User-Agent客户端识别浏览器信息
X-Request-ID请求追踪UUID
If-Modified-Since缓存控制HTTP日期格式
Accept-Language语言选择en-US
API-Version版本控制v2
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进