Spring 数据休息 : Override Method in RestController with same request-mapping-path

标签 spring rest spring-data-rest

鉴于我们的应用程序中有以下工作存储库:

public interface PersonRepository extends PagingAndSortingRepository<Person, Integer> {

}

存储库通过带有 URI“/api/persons”的 spring-data-rest 公开并按预期工作。

我们现在想要在 RestController 的方法中覆盖存储库的 post-method:
@RestController
@RequestMapping("/persons")
public class PersonController {

@RequestMapping(value = "/**", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> savePerson(@RequestBody Person person) {
      //do something fancy
      return "it works";
}

如果我们将数据发布到“/api/persons”,则调用 PersonController 的方法,但无法通过 Rest 访问 PersonRepository 的任何方法(例如 GET)。我们不断收到 405 错误和以下异常:
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported

经过一番尝试后,我们发现如果我们将 @RequestMapping 注释的 value-property 从
value="/**"


value="/save"

看完这篇 question以及链接的文档,如果 value-property 为“/**”,它也应该有效

最佳答案

最后,升级到新版本的 spring/spring-data/spring-data-rest 后,一切正常。

关于 Spring 数据休息 : Override Method in RestController with same request-mapping-path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28455208/

相关文章:

java - 尝试运行 HelloWorld REST 服务时出现 404

spring - 更新对多关联

mongodb - 在 Spring 数据的 RepositoryRestResource 中急切加载 MongoDB @DBRef

spring - 如何在 spring 中使用配置文件指定外部 application.yml

java - BeanCreationException - 以前工作过,现在不再工作

java - 握手失败客户端 key 交换,使用证书链

hibernate - 如何将 Fixtures 添加到 Spring Hibernate 项目

java - 在这个 Spring Boot\MVC Controller 中处理 REST 样式映射的正确方法是什么?

c# - 适用于 C# 的 Firebase REST API 示例

java - Spring 数据休息 : How to search by another object's key?