2015-10-14 128 views
1

我的WEB API有一個單一的GET方法,如下所述,它將返回一個基於id的資源。使用Web Api GET方法

public HttpResponseMessage Get(string id) 
{ 
    ....  
} 

我也有一個要求,其中我需要檢查 資源是否存在(無需返回資源)。

我想知道,是否根據真正的RESTful服務 是否需要爲第二個需求編寫單獨的GET或使用現有的 。

+0

你總是可以返回'NotFound()'。 –

+1

我總是希望單個資源(帶有一個id)的GET可以返回一個404,如果它不存在的話。 – codemonkey

+0

@麥克艾森,你是建議一種新方法 – refactor

回答

0

如您的評論中所述,您希望能夠檢查資源是否存在而不返回。

爲此,您可以使用HEAD定義爲here

9.4 HEAD

HEAD方法是相同,除了在應答服務器不能返回一個消息體得到的。 HTTP頭中包含的對HEAD請求作出響應的元信息應該與爲響應GET請求而發送的信息相同。此方法可用於獲取有關請求隱含的實體的元信息,而無需傳遞實體主體本身。此方法通常用於測試超文本鏈接的有效性,可訪問性和最近的修改。

對HEAD請求的響應可能是可緩存的,因爲響應中包含的信息可能用於從該資源更新先前緩存的實體。如果新字段值指示緩存實體與當前實體不同(如將通過Content-Length,Content-MD5,ETag或Last-Modified中的更改所指示的那樣),則緩存必須將緩存條目視爲陳舊。

我沒有代碼爲您提供關於如何實現HEAD請求的答案卻快速搜索產生this resultgoogle cached如果直接下跌。

希望你指出正確的方向!

1

對於這些類型的需求,我們可以使用Web API 2的IHttpActionResult。這是代碼片段。使用IHttpActionResult將對具有HTTP狀態碼和響應對象的客戶端給予適當的響應。

public IHttpActionResult Get(string id) 
     { 
      //IsResourceExists is method taking id and return response 
      var response = IsResourceExists(id); 

      //Assuming 'response' is TRUE 
      if (response) 
      { 
       return Ok(response); 
      } 
      else 
      { 
       return NotFound(); 
      } 
     }