资讯详情

资讯详情

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. 绑定到 MapGetMapping(/analytics) public MapString, String analyzeHeaders( RequestHeader MapString, 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/jsonContent-Type请求体类型application/jsonUser-Agent客户端识别浏览器信息X-Request-ID请求追踪UUIDIf-Modified-Since缓存控制HTTP日期格式Accept-Language语言选择en-USAPI-Version版本控制v2
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →