2015-10-14 146 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(); 
      } 
     }