[英]Handling Put requests on Java side
我有一個動態的Web項目,在其中使用apache cxf和HTTP。 現在我以前處理過POST和GET請求。
在Java方面,我將使用批注@GET/@POST
等,並且可以從UI發出請求。
我只是在閱讀有關PUT
請求的信息,因此無法在上述情況下很好地放置它。 據我了解,PUT用於添加數據或上傳數據。 現在,我不明白的是
HTTP PUT由@PUT
注釋的方法處理。
@PUT
@Path("/foo/{id}")
@Consumes(MediaType.APPLICATION_JSON)
public Response putAFoo(@PathParam("id") int theId, Foo theFoo) {
// Save theFoo which has theId or do what you want with it.
if (fooWasCreated) {
return Response.created("/foo/" + theId).build();
} else {
return Response.ok().build();
}
}
為什么要使用PUT? 通常,PUT用於更改已知資源的服務器端狀態。 如果可以通過comple URI尋址資源,則可以使用此URI來獲取它的表示形式。 您還可以使用資源的新表示形式將其放置到此URL。
如果ID由服務器控制,則PUT還可用於創建新資源。 一個要求
PUT /foo/123
可以用來
/foo/123
或 /foo/123
。 這與通常在收集資源上請求的POST不同。
POST /foo/
帶有新資源的表示形式將導致服務器為新資源分配一個ID。 然后,服務器將返回如下響應:
201 Created
Location: /foo/456
Apache CXF http綁定頁面上有一個@PUT
示例。
為什么要使用PUT? 好吧,在RESTful應用程序中,您可能希望例如為實體(例如MyEntity
實現添加/編輯功能。
現在,添加將在POST
方法上的鏈接上: /myApplication/myEntity
上,而編輯將在/myApplication/myEntity/id
,但將在PUT
。 GET
請求還將在先前的鏈接/myApplication/myEntity/id
,對於DELETE
也是同樣的。
您基本上是在以標准,簡單的方式為MyEntity
提供CRUD操作支持。 當然,您可以通過POST
進行PUT
和DELETE
操作,這也可以工作。
您可以在此處閱讀有關RESTful Web服務的更多信息 ,並在此處閱讀有關PUT vs POST的更多信息 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.