Skip to content

fix(fit-http): 修复 RequestParam 不指定 name 属性时报错的问题#413

Open
Cherished-l wants to merge 1 commit intoModelEngine-Group:mainfrom
Cherished-l:fit-bugfix-requestparam-name
Open

fix(fit-http): 修复 RequestParam 不指定 name 属性时报错的问题#413
Cherished-l wants to merge 1 commit intoModelEngine-Group:mainfrom
Cherished-l:fit-bugfix-requestparam-name

Conversation

@Cherished-l
Copy link
Contributor

问题描述

修复 Issue #120:当前 FIT 框架中,@RequestParam 注解必须显式指定 value 属性,否则框架启动时会抛出 IllegalArgumentException: The query key cannot be blank. 异常。

解决方案

实现参数名 fallback 逻辑,优先级:name > value > 参数名

当不指定 namevalue 属性时,自动使用方法参数名作为 query key(项目已配置 -parameters 编译参数)。

修改内容

核心逻辑修改

  • AbstractRequestParamMapperResolver.java: 添加 resolveParamName() 方法,实现 fallback 逻辑
  • RequestParamMapperResolver.java: 更新 createSourceFetcher() 使用 fallback
  • RequestHeaderMapperResolver.java: 更新 createSourceFetcher() 使用 fallback
  • RequestCookieMapperResolver.java: 更新 createSourceFetcher() 使用 fallback
  • RequestFormMapperResolver.java: 更新 createSourceFetcher() 使用 fallback
  • PathVariableMapperResolver.java: 更新 createSourceFetcher() 使用 fallback

错误信息改进

  • QueryFetcher.java: 改进错误信息
  • HeaderFetcher.java: 改进错误信息
  • CookieFetcher.java: 改进错误信息
  • FormUrlEncodedEntityFetcher.java: 改进错误信息
  • PathVariableFetcher.java: 改进错误信息

测试

  • HttpParamTest.java: 添加测试方法
  • RequestParamMapperResolverTest.java: 添加 3 个单元测试用例

使用示例

修复后可以使用更简洁的写法:

// 之前(会报错)
@GetMapping(/user)
public void getUser(@RequestParam String userId) { }  // ❌ 报错

// 现在(正常工作)
@GetMapping(/user)
public void getUser(@RequestParam String userId) { }  // ✅ 自动使用参数名 userId

兼容性

  • ✅ 向后兼容:已指定 name/value 的代码行为不变
  • ✅ 性能影响:无显著影响(参数解析只在启动时进行一次)
  • ✅ 安全风险:无

检查清单

  • 所有测试通过(mvn clean install
  • 代码已格式化
  • 公共 API 有 Javadoc
  • 遵循项目编码规范

🤖 Generated with Claude Code

Co-Authored-By: Claude noreply@anthropic.com

Fixes: #120

- 在 AbstractRequestParamMapperResolver 中添加 resolveParamName() 方法
- 实现参数名 fallback 逻辑:name > value > 参数名
- 更新所有 RequestXxxMapperResolver 实现类
- 改进所有 Fetcher 的错误信息,提供清晰的解决步骤
- 添加单元测试验证不同参数配置的行为

Fixes: ModelEngine-Group#120

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

RequestParam不设置value属性时启动报错

1 participant