2013-08-19 120 views
2

我最近實現了Spring Data REST(http://www.springsource.org/spring-data/rest)以便通過REST接口自動公開CRUD功能。Spring Data REST PUT方法不允許

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類,它定義了我所有實體類的資源映射。

+0

您使用什麼網址,使'PUT'要求? – soulcheck

+0

@soulcheck對POST有效的相同URL,只是將動詞改爲PUT。即「http:// localhost:8080//,然後傳入一個JSON主體,以獲得實體內容 –

回答

11

您試圖對POSTPUT請求使用相同的url,但PUT通常需要必須更新的對象的id。

Spring確實具有localhost:8080/<applicationname>/<entityName>的映射,但僅適用於POST請求並因此出現錯誤。

嘗試使用PUT有:

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

Ha - 輝煌,在最後插入一個隨機數並且它第一次工作。 ,我們有由Hibernate自動生成的ID(以及底層數據庫),所以我必須看看它是如何工作的,但是感謝您的幫助 –

+0

@AndyEsser你有沒有在休眠時自動生成put的id? –

相關問題