Spring Data Rest:RestController中的Override方法,具有相同的request-mapping-path

时间:2015-02-11 13:09:09

标签: spring rest spring-data-rest

在我们的应用程序中给出以下工作存储库:

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;

,它也应该有用。

1 个答案:

答案 0 :(得分:2)

最后,在升级到spring / spring-data / spring-data-rest的新版本后,一切都按预期工作。