我最近实现了Spring Data REST(http://www.springsource.org/spring-data/rest),以便通过REST接口自动公开CRUD功能。
GET和POST都按预期工作,但是在使用PUT动词时我得到405方法不允许。
根据文件
Verb Method
GET CrudRepository<ID,T>.findOne(ID id)
POST CrudRepository<ID,T>.save(T entity)
PUT CrudRepository<ID,T>.save(T entity)
DELETE CrudRepository<ID,T>.delete(ID id)
默认情况下,所有这些方法都会导出到客户端。我已经阅读了这里的文档(http://static.springsource.org/spring-data/rest/docs/1.1.0.M1/reference/htmlsingle/),但似乎无法找到这种行为的原因。
任何人都可以建议我可能出错的地方吗?我提供了一个RepositoryRestMvcConfiguration类,它定义了我所有Entity类的资源映射。
答案 0 :(得分:11)
您尝试对POST
和PUT
请求使用相同的网址,但PUT
通常需要必须更新的对象的ID。
Spring确实有localhost:8080/<applicationname>/<entityName>
的映射,但只针对POST
请求,因此错误。
尝试将PUT
用于:
http://localhost:8080/<applicationname>/<entityName>/<objectId>