我的WEB API有一个单一的GET方法,如下所述,它将返回一个基于id的资源。使用Web Api GET方法
public HttpResponseMessage Get(string id)
{
....
}
我也有一个要求,其中我需要检查 资源是否存在(无需返回资源)。
我想知道,是否根据真正的RESTful服务 是否需要为第二个需求编写单独的GET或使用现有的 。
我的WEB API有一个单一的GET方法,如下所述,它将返回一个基于id的资源。使用Web Api GET方法
public HttpResponseMessage Get(string id)
{
....
}
我也有一个要求,其中我需要检查 资源是否存在(无需返回资源)。
我想知道,是否根据真正的RESTful服务 是否需要为第二个需求编写单独的GET或使用现有的 。
如您的评论中所述,您希望能够检查资源是否存在而不返回。
为此,您可以使用HEAD
定义为here。
9.4 HEAD
HEAD方法是相同,除了在应答服务器不能返回一个消息体得到的。 HTTP头中包含的对HEAD请求作出响应的元信息应该与为响应GET请求而发送的信息相同。此方法可用于获取有关请求隐含的实体的元信息,而无需传递实体主体本身。此方法通常用于测试超文本链接的有效性,可访问性和最近的修改。
对HEAD请求的响应可能是可缓存的,因为响应中包含的信息可能用于从该资源更新先前缓存的实体。如果新字段值指示缓存实体与当前实体不同(如将通过Content-Length,Content-MD5,ETag或Last-Modified中的更改所指示的那样),则缓存必须将缓存条目视为陈旧。
我没有代码为您提供关于如何实现HEAD
请求的答案却快速搜索产生this result也google cached如果直接下跌。
希望你指出正确的方向!
对于这些类型的需求,我们可以使用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();
}
}
你总是可以返回'NotFound()'。 –
我总是希望单个资源(带有一个id)的GET可以返回一个404,如果它不存在的话。 – codemonkey
@麦克艾森,你是建议一种新方法 – refactor