新的 Rest API 是在很少有资源 GET endpoint的情况下开发的。调用endpoint时,我得到以下错误: 映射的处理程序方法不明确
我收到 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;
}
接口代码:
公共接口AuditRepository扩展了JpaRepository{PagefindByMessageContains(@Param(“message”)字符串消息,可分页);
我希望GET调用返回数据并且不会抛出任何500错误
其余 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}")
Optional<AuditEntity> messageById(@PathVariable("messageId") String messageId) {
...
}
@RequestMapping(value = "/{serviceName}", method = RequestMethod.GET)
List<AuditEntity> servicePageable(@RequestParam("serviceName") String serviceName) {
...
}
对于Spring来说,这两种请求映射都是不明确的,适合处理请求。
要解决此问题,您可能需要将上面显示的第二种方法替换为:
@GetMapping
List<AuditEntity> servicePageable(@RequestParam("serviceName") String serviceName) {
...
}
所以HTTP请求可以是这样的:
GET /list?serviceName=foo HTTP/1.1
Host: example.org
其中< code>foo是< code>serviceName参数的值。
对于第一种方法,请求将如下所示:
GET /list/foo HTTP/1.1
Host: example.org
其中< code>foo是< code>messageId参数的值。
我用Java编写REST api,并使用Groovy和Spock进行测试。
我有一个Spring应用程序,在其中我声明了我的类,如下所示: 但是当我试图到达其中一个restendpoint时,我得到一个错误:并且它指定这两个方法为问题。我的印象是,如果我更改了请求参数,Spring不会通过以下帖子抱怨它们是相同的:http://www.coderanch.com/t/598675/Spring/handling-http-request-parameters但显然它仍然如
在我的Spring Boot应用程序中有以下两个方法: 我想通过(自动生成)或(,如果可用的话)来。 java.lang.IllegalStateException:映射到“/user/dis1”的处理程序方法不明确:{com.mua.cse616.model.user com.mua.cse616.controller.usercontroller.one(java.lang.long),com
我有两种将实体映射到域的方法。 当我试图定义实体列表到域的映射方法时,我发现了用于映射集合元素的模糊映射方法。 有没有一种方法可以定义用于映射对象集合的方法
使用Spring Boot 2.4.5和IntelliJ 2021.2。迁移后 到 每次我访问。页面上写着: 获取错误未定义/v3/api文档 当我检查日志时: java.lang.IllegalStateException:为“/v3/api文档”映射的不明确处理程序方法:{public org.springframework.http.ResponseEntity springfox.docu
我正在使用mapstruct从一个DTO映射到另一个DTO。我有多个默认方法,但其中2个返回值为String,并且使用相同的类作为输入参数,这给我带来了“使用java MapStruct的模糊映射方法”错误。 错误:(16,7)Java:在将属性“java.lang.String StatusHistory”映射到java.util.Map:java.util.Map toMap(java.lan
我正在使用mapstruct从一个DTO映射到另一个DTO。我有多个默认方法,但其中两个返回值为String,并且使用了与输入参数相同的类,这给了我“使用java MapStruct的mapping methods不明确”的错误。我在这里添加代码的相关部分: 错误是 发现将属性“Program ProgramInstance”映射到java.lang.String的映射方法不明确:java.lan
我有这个“创建”方法来映射/列出帖子请愿。我创建了一个重载的方法“createEmpty()”,以便进行尝试,但后来删除了它,因为它抛出了一个org.springFramework.beans.factory.BeanCreationException来处理不明确的映射。 问题是我删除了said方法后,仍然得到了异常。 信息:Dev App Server现在正在运行5月04日4:21:34 PM