簡體   English   中英

在Java端處理Put請求

[英]Handling Put requests on Java side

我有一個動態的Web項目,在其中使用apache cxf和HTTP。 現在我以前處理過POST和GET請求。

在Java方面,我將使用批注@GET/@POST等,並且可以從UI發出請求。

我只是在閱讀有關PUT請求的信息,因此無法在上述情況下很好地放置它。 據我了解,PUT用於添加數據或上傳數據。 現在,我不明白的是

  1. 如何在Java端處理PUT。 我可以在這里舉個例子(鏈接)。
  2. 為什么要使用PUT? 即使我想添加或上傳一些信息,也可以使用POST,然后將其添加到我的數據源中。

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

可以用來

  1. 覆蓋/foo/123
  2. 創建/foo/123

這與通常在收集資源上請求的POST不同。

POST /foo/

帶有新資源的表示形式將導致服務器為新資源分配一個ID。 然后,服務器將返回如下響應:

201 Created
Location: /foo/456
  1. Apache CXF http綁定頁面上有一個@PUT示例。

  2. 為什么要使用PUT? 好吧,在RESTful應用程序中,您可能希望例如為實體(例如MyEntity實現添加/編輯功能。

    現在,添加將在POST方法上的鏈接上: /myApplication/myEntity上,而編輯將在/myApplication/myEntity/id ,但將在PUT GET請求還將在先前的鏈接/myApplication/myEntity/id ,對於DELETE也是同樣的。

    您基本上是在以標准,簡單的方式為MyEntity提供CRUD操作支持。 當然,您可以通過POST進行PUTDELETE操作,這也可以工作。

    您可以在此處閱讀有關RESTful Web服務的更多信息 ,並在此處閱讀有關PUT vs POST的更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM