Spring中@RequestHeader参数名转义:含短横线请求头如何处理
解决Spring中@RequestHeader匹配带短横线请求头的参数名转义问题
当遇到If-None-Match这类含短横线、不符合Java命名规范的请求头时,无需显式指定@RequestHeader的name属性,仅通过参数名驼峰转短横线的规则即可完成映射:
- 核心规则:Spring在未指定
@RequestHeader的name/value时,会自动将方法参数的驼峰命名转换为短横线分隔格式(kebab-case),且匹配时默认忽略大小写。 - 具体做法:将请求头名称的短横线去掉,每个短横线后的首字母大写,形成驼峰式参数名。比如
If-None-Match对应参数名ifNoneMatch。
代码示例
@GetMapping("/demo") public String handleHeader(@RequestHeader String ifNoneMatch) { // 此处ifNoneMatch会自动映射到请求头If-None-Match的值 return "If-None-Match value: " + ifNoneMatch; }
注意事项
要确保项目支持参数名获取:
- 使用Java 8及以上版本(依赖JEP 118的参数名特性);
- 编译时添加
-parameters参数(Maven可在maven-compiler-plugin中配置<parameters>true</parameters>),让Spring能正确读取方法参数名。
内容的提问来源于stack exchange,提问作者Grim
相关产品推荐
相关产品推荐

