2013-08-19 3 views
2

Недавно я реализовал Spring Data REST (http://www.springsource.org/spring-data/rest), чтобы автоматически открывать функциональность CRUD через интерфейс REST.Весна данных Метод REST PUT не разрешен

GET и POST работают как и ожидалось, однако я получаю метод 405, который не допускается при использовании глагола PUT.

Согласно документации

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

Какой URL вы используете, чтобы сделать 'запрос PUT'? – soulcheck

+0

@soulcheck Тот же URL-адрес, который работает для POST, просто меняя глагол на PUT. т.е. «http: // localhost: 8080/<имя приложения>/, а затем передается в тело JSON для содержимого объекта –

ответ

11

Вы пытаетесь использовать тот же URL-адрес для POST и PUT запросов, но PUT обычно требует идентификатор объекта, который необходимо обновить.

Весна имеет картографию для localhost:8080/<applicationname>/<entityName>, но только для POST и, следовательно, ошибки.

PUT Попробуйте использовать с:

http://localhost:8080/<applicationname>/<entityName>/<objectId> 
+0

Ha - блестящий, застрял случайный номер в конце для , и он работал в первый раз. , у нас есть идентификаторы, которые автоматически генерируются Hibernate (ну, лежащая в основе БД), поэтому мне нужно посмотреть, как это работает, но спасибо за вашу помощь –

+0

@AndyEsser вы обошли hibernate auto, генерируя идентификаторы на панели? –