2017-08-07 87 views
1

我創建一個REST服務,我有以下API -使用@PathParams與PUT REST API

@PUT 
    @Path("/delete/{teamName}") 
    @Consumes(MediaType.TEXT_PLAIN) 
    @Produces(MediaType.TEXT_PLAIN) 
    public Response delete(@PathParam("teamName")String teamName) { 
     if (db.delete(teamName)) { 
      return Response.status(200).build(); 
     } 
     return Response.status(400).build(); 
    } 

此API接受PathParamdelete一個teamname。這是一個PUT電話。 我的問題是 -

  1. 它是一個很好的做法在PUT調用中使用@PathParams

  2. 有什麼優點和缺點?

+2

1.在PUT調用中使用PathParam可以。 2.您應該使用DELETE和PathParam而不是PUT進行刪除操作。你不應該在你的路徑中使用像'刪除'這樣的動詞。 4.它取決於teamName是否是唯一標識符 - 如果是,那麼它是可以的,如果不是的話 - 你應該在Pathparam中使用id。 – Justas

+0

是的,大部分時間應該(_would_),因爲PUT意味着存在的資源,通常具有唯一的標識符。 '@ PathParam'表示標識符是可變的。 –

+0

「@ Consumes」註釋指定了服務器在請求主體中所期望的數據類型(即不在URL或查詢參數中)。如果你的端點只期望'@ PathParam',那麼你不需要'@ Consumes',因爲你無論如何都不會讀取任何內容。 –

回答

1

可以在任何種類的RESTful API資源處理程序中使用PathParam。但是,PUT方法在這裏不適用,因爲它違反了基本的REST原則。

REST假設特定的HTTP方法(如PUT,GET,DELETE,POST)對應於需要對數據執行的特定操作。 例如,如果要檢索數據,則需要使用GET,而DELETE則是您需要刪除數據的部分。

在您的特定情況下,我的東西去像

DELETE /teams/{teamName} 

我建議你承認至少Use RESTful URLs and actions有一個更好的瞭解基本的REST原則。