方法级别 @RequestMapping 与语法糖注解支持
AsyncTest Caller 对方法级别的 @RequestMapping 及其相关语法糖注解(如 @GetMapping, @PostMapping 等)有如下支持与规则。
1️⃣ 请求路径与方法解析
@RequestMapping的path参数为列表- 仅取第一个路径作为最终接口路径
java
@RequestMapping(path = {"/user", "/member"})
public String getUser() {}最终解析路径为
/user
@RequestMapping的method参数为列表- 仅取第一个 HTTP 方法
java
@RequestMapping(method = {RequestMethod.POST, RequestMethod.GET})
public void saveUser() {}最终 HTTP Method 为 POST
语法糖注解如
@GetMapping、@PostMapping等- 如果存在多个语法糖注解,只取第一个生效
同时存在
@RequestMapping与语法糖注解- 最终请求方法由更加具体的注解决定
- 示例:
java
@RequestMapping(method = RequestMethod.POST)
@GetMapping("/list")
public List<User> listUsers() {}最终 HTTP Method 为 GET
未指定请求方法
- 默认请求方法为 GET
path、headers、params、consumes 参数合并规则
- 类级 + 方法级 + 语法糖注解均参与合并
- 优先级由更具体的注解决定
path 转换为 AsyncTest 格式
- Spring
{}路径变量转换为 - 示例:
- Spring
/api/user/{id} -> /api/user/{{id}}
/api/{id:[0-9]+} -> /api/{{id}}
2️⃣ 继承相关规则
抽象类和接口
- 在类筛选阶段被忽略
重写父类方法,且路由一致
- 仅插入子类节点到 tree 结构
重写父类方法,但路由不一致
- 父类和子类方法均插入到 tree 结构
相同路由但函数名不一致(错误代码,Spring 无法启动)
- 但插件仍然解析,仅保留子类函数节点
无继承关系但存在相同路由
- 仅插入后出现的节点到 tree 结构
- 启动时会报错
✅ 总结
- 方法级
@RequestMapping与语法糖注解path、method、headers、params、consumes统一解析与合并- 优先级由更具体注解决定
- 路径变量自动转换为 AsyncTest 模板格式
- 插件遵循 Spring MVC 继承语义,保证接口 tree 与实际运行一致