在我们的应用程序中给出以下工作存储库:
public interface PersonRepository extends PagingAndSortingRepository<Person, Integer> {
}
使用URI&#34; / api / persons&#34;通过spring-data-rest公开存储库。并按预期工作。
我们现在想要在RestController的方法中覆盖存储库的post方法:
@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";
}
如果我们将数据发布到&#34; / api / persons&#34;调用PersonController的方法,但是可以通过rest访问PersonRepository的任何方法(例如GET)。我们经常遇到405错误和以下异常:
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported
经过一些游戏,我们发现如果我们从
更改@RequestMapping注释的value-property,一切都按预期工作(可以调用存储库和控制器的方法)value="/**"
到
value="/save"
在阅读此question和链接的文档后,如果value-property为&#34; / **&#34;
,它也应该有用。答案 0 :(得分:2)
最后,在升级到spring / spring-data / spring-data-rest的新版本后,一切都按预期工作。