Ambiguous handler methods mapped for HTTP path
程序员文章站
2022-03-01 13:37:32
...
1、问题描述
错误提示信息提示说 findAll() 方法和 findById() 方法的HTTP映射不明确,或者说这两个方法的映射重复。意思是Controller中有两个模棱两可的处理方法,这两个方法有歧义,无法分清是谁,因为spring无法根据传参的类型自动匹配到可以处理的方法。
来看下造成映射重复的代码是什么样子的:
@RequestMapping(value = "/{findAll}",method = RequestMethod.GET)
@ApiOperation(value = "查询所有信息")
public Result findAll(){
return new Result(true, StatusCode.OK,"查询成功",labelService.findAll());
}
@RequestMapping(value = "/{labelId}",method = RequestMethod.GET)
@ApiOperation(value = "根据id查询label")
public Result findById(@PathVariable("labelId") String labelId){
return new Result(true,StatusCode.OK,"查询成功",labelService.findById(labelId));
}
我本来是想要分别访问 /findAll 和 /lablelId ,但是却提示我映射的是同一个。因为我想要用Restful编程风格,所以就必须改变请求的 url 格式,保证url对应的方法不会产生歧义。
上面的写法有问题:用 {} 包裹起来的变量好像会被模糊化。
2、解决方法
@RequestMapping(value = "/{findAll}",method = RequestMethod.GET)
@ApiOperation(value = "查询所有信息")
public Result findAll(){
return new Result(true, StatusCode.OK,"查询成功",labelService.findAll());
}
@RequestMapping(value = "/findById/labelId/{labelId}",method = RequestMethod.GET)
@ApiOperation(value = "根据id查询label")
public Result findById(@PathVariable("labelId") String labelId){
return new Result(true,StatusCode.OK,"查询成功",labelService.findById(labelId));
}
将请求路径做以区分,这样两个方法就能互不影响都能成功查询了。
推荐阅读
-
java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path
-
swagger 报错 Ambiguous handler methods mapped for ‘/v3/api-docs/‘
-
报错处理:“Ambiguous handler methods mapped for ...”
-
Ambiguous handler methods mapped for HTTP path
-
Ambiguous handler methods mapped 模棱两可的方法
-
Ambiguous handler methods mapped for 'xxx'的解决办法
-
java.lang.IllegalStateException: Ambiguous handler methods mapped for ‘/emp/lisi‘: {public com.weiji