如何修复为RESTAPI映射的不明确处理程序方法

如何修复为RESTAPI映射的不明确处理程序方法,rest,spring-boot,spring-data-jpa,Rest,Spring Boot,Spring Data Jpa,新的RESTAPI是用很少的资源获取端点开发的。调用终结点时,我发现以下错误: 映射的不明确处理程序方法 我得到500个错误。我哪里做错了。请帮忙。谢谢 我尝试将requestmapping设置为name,path没有区别 控制器类: @CrossOrigin(origins = "*") @RequestMapping(value = "/list", method = RequestMethod.GET) Page<AuditEntity> AuditPageable(Pagea

新的RESTAPI是用很少的资源获取端点开发的。调用终结点时,我发现以下错误: 映射的不明确处理程序方法

我得到500个错误。我哪里做错了。请帮忙。谢谢

我尝试将requestmapping设置为name,path没有区别

控制器类:

@CrossOrigin(origins = "*")
@RequestMapping(value = "/list", method = RequestMethod.GET)
Page<AuditEntity> AuditPageable(Pageable pageable) {

    return auditRepository.findAll(pageable);
}


@CrossOrigin(origins = "*")
@GetMapping("/{messageId}")
public Optional<AuditEntity> messageById(@PathVariable("messageId") String messageId) {

    return auditRepository.findById(messageId);
}

@CrossOrigin(origins = "*")
@RequestMapping(value = "/{serviceName}", method = RequestMethod.GET)
List<AuditEntity> servicePageable(@RequestParam("serviceName") String serviceName) {
    List<AuditEntity> services = auditRepository.findAll().stream().distinct().collect(Collectors.toList());
    return services;
}
@CrossOrigin(origins=“*”)
@RequestMapping(value=“/list”,method=RequestMethod.GET)
页面审核可分页(可分页可分页){
返回auditRepository.findAll(可分页);
}
@交叉原点(原点=“*”)
@GetMapping(“/{messageId}”)
公共可选messageById(@PathVariable(“messageId”)字符串messageId){
返回auditRepository.findById(messageId);
}
@交叉原点(原点=“*”)
@RequestMapping(value=“/{serviceName}”,method=RequestMethod.GET)
列出servicePageable(@RequestParam(“serviceName”)字符串serviceName){
List services=auditRepository.findAll().stream().distinct().collect(Collectors.toList());
返回服务;
}
接口代码:

公共接口AuditRepository扩展了JpaRepository{ 页面findByMessageContains(@Param(“message”)字符串消息,可分页


我希望GET调用返回数据,不抛出任何500个错误

Rest API路径与下面的API路径相同

1. @GetMapping("/{messageId}")

2. @RequestMapping(value = "/{serviceName}", method = RequestMethod.GET)

因此,您将得到映射的不明确处理程序方法,例如,考虑以下HTTP请求:

GET /list/foo HTTP/1.1
Host: example.org
Spring无法区分是使用第一种方法还是第二种方法处理:

@GetMapping(“/{messageId}”)
可选messageById(@PathVariable(“messageId”)字符串messageId){
...
}
@RequestMapping(value=“/{serviceName}”,method=RequestMethod.GET)
列出servicePageable(@RequestParam(“serviceName”)字符串serviceName){
...
}
这两个请求映射对于Spring来说都是不明确的,并且适合于处理请求


要修复此问题,您可能需要将上面显示的第二种方法替换为:

@GetMapping
列出servicePageable(@RequestParam(“serviceName”)字符串serviceName){
...
}
因此HTTP请求可以是:

GET /list?serviceName=foo HTTP/1.1
Host: example.org
其中
foo
serviceName
参数的值

对于第一种方法,请求如下所示:

GET /list/foo HTTP/1.1
Host: example.org
其中
foo
messageId
参数的值