Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring Data REST PUT Method Not Allowed

I recently implemented Spring Data REST (http://www.springsource.org/spring-data/rest) in order to expose CRUD functionality through a REST interface automatically.

GET and POST both work as expected, however I'm getting a 405 Method Not Allowed when using the PUT Verb.

According to the documentation

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)

By default, all of these methods are exported to clients. I've read through the documentation here (http://static.springsource.org/spring-data/rest/docs/1.1.0.M1/reference/htmlsingle/) but can't seem to find a reason for this behaviour.

Can anyone suggest where I might have gone wrong? I have provided a RepositoryRestMvcConfiguration class which defines resource mapping for all my Entity classes.

like image 867
Andy Esser Avatar asked Sep 01 '25 05:09

Andy Esser


1 Answers

You are trying to use the same url for POST and PUT requests, but PUT usually requires the id of the object that has to be updated.

Spring does have mapping for localhost:8080/<applicationname>/<entityName>, but only for POST request and hence the error.

Try using PUT with:

http://localhost:8080/<applicationname>/<entityName>/<objectId>
like image 63
soulcheck Avatar answered Sep 02 '25 19:09

soulcheck