JAX-RS規範-常用註解淺析

一、@Path

  若希望一個Java類能夠處理REST請求,則這個類必須至少添加一個@Path("/")的annotation;

  對於方法,這個annotation是可選的,如果不添加,則繼承類的定義。

(1)@Path裏的值可以是一個複雜的表達式,例如@Path("{id}") ,其中 {id}表達式代碼了一個模板參數;

         一個模板參數是一個定義在@Path裏的通配符,它以 { 開始,中間是一堆字母和數字的混合串(不能包含 / 字符),以 } 結尾。又如: @Path("{firstName}-{lastName}") .

(2)@Path也支持正則表達式,例如: @Path("{id: \\d+}") ,其中 \\d+ 表示一個數字。格式爲: A : B

 

二、@Method

(1)一個方法上只有添加了某個Http Method的annotation,例如@GET,纔有資格處理請求。

(2)對於資源的具體操作類型,由HTTP動詞表示。

常用的HTTP動詞有下面五個(括號裏是對應的SQL命令)。

  • GET(SELECT):從服務器取出資源(一項或多項)。
  • POST(CREATE):在服務器新建一個資源。
  • PUT(UPDATE):在服務器更新資源(客戶端提供改變後的完整資源)。
  • PATCH(UPDATE):在服務器更新資源(客戶端提供改變的屬性)。
  • DELETE(DELETE):從服務器刪除資源。

還有兩個不常用的HTTP動詞。

  • HEAD:獲取資源的元數據。
  • OPTIONS:獲取信息,關於資源的哪些屬性是客戶端可以改變的。

下面是一些例子。

  • GET /zoos:列出所有動物園
  • POST /zoos:新建一個動物園
  • GET /zoos/ID:獲取某個指定動物園的信息
  • PUT /zoos/ID:更新某個指定動物園的信息(提供該動物園的全部信息)
  • PATCH /zoos/ID:更新某個指定動物園的信息(提供該動物園的部分信息)
  • DELETE /zoos/ID:刪除某個動物園
  • GET /zoos/ID/animals:列出某個指定動物園的所有動物
  • DELETE /zoos/ID/animals/ID:刪除某個指定動物園的指定動物


三:Accept和Content-Type的區別

    Accept就表示接口要返回給客戶端的數據格式,
    Content-Type表示客戶端發送給服務器端的數據格式。這個是寫REST接口時候定義的 
    正常如果服務器沒定義Accept但是自己添加了的話 會報404 沒找到對應接口。


四:@Produces 表示類或者方法返回的MIME數據類型

        有幾種格式如下:

(1)@Produces("text/plain") 文本類型

(2)@Produces("text/html")  Html類型

(3)@Produces({"application/xml"}) Xml類型

        (4)@Produces({ "application/json"}) Json類型

       可以一次註解兩種或多種的MIME類型,格式如:{"application/xml", "application/json"}這表示兩者都可以使用,但是選擇的時候一般會選擇前者,即application/xml,因爲它第一次出現。


五:@Consumes 代表的是一個資源可以接受的 MIME 類型。

       @Consumes 註釋針對 Content-Type 請求頭進行匹配,以決定方法是否能接受給定請求的內容。

 

六:@Queryparam與@Pathparam區別

@Queryparam:指定的是URL中的參數是以鍵值對的形式出現的,而在程序中 @QueryParam("from")  int from則讀出URL中from的值, 

例如:URL輸入爲:users?from=100&to=200&orderBy=age&orderBy=name 

@Pathparam:URL中只出現參數的值,不出現鍵值對

例如: /users/100 



追加:

    HTTP方法冪等性和安全性的分析:

    HTTP協議規定了不同方法的安全特性和冪等特性,作爲服務提供者的服務器必需爲客戶端提供這些特性。安全性,僅指該方法的多次調用不會產生副作用,不涉及傳統意義上的“安全”,這裏的副作用是指資源狀態。即,安全的方法不會修改資源狀態,儘管多次調用的返回值可能不一樣(被其他非安全方法修改過)。冪等性,是指該方法多次調用返回的效果(形式)一致,客戶端可以重複調用並且期望同樣的結果。冪等的含義類似於編程語言中的setter方法[1],一次調用和多次調用產生的效果是一致的,都是對一個變量進行賦值。安全性和冪等性含義有些接近,容易搞混。

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章