我的WEB API有一个如下所述的GET方法,它将根据id返回一个资源。
public HttpResponseMessage Get(string id)
{
....
}
我还有一个要求,我需要检查 资源是否存在(无需返回资源)。
我想知道,是否按照真正的RESTful服务 我是否需要为第二个要求编写单独的GET或使用 现有的。
答案 0 :(得分: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();
}
}
答案 1 :(得分:0)
如评论中所述,您希望能够在不返回资源的情况下检查资源是否存在。
为此,您可以使用定义here的HEAD
。
9.4 HEAD
HEAD方法与GET相同,只是服务器不能在响应中返回消息体。响应HEAD请求的HTTP头中包含的元信息应该与响应GET请求时发送的信息相同。该方法可用于获得关于请求所暗示的实体的元信息,而无需转移实体主体本身。此方法通常用于测试超文本链接的有效性,可访问性和最近的修改。
对HEAD请求的响应可以是可缓存的,因为响应中包含的信息可用于从该资源更新先前缓存的实体。如果新字段值指示缓存的实体与当前实体不同(如Content-Length,Content-MD5,ETag或Last-Modified中的更改所示),则缓存必须将缓存条目视为陈旧。
我没有代码为您提供有关如何实施HEAD
请求的答案,但如果直接关闭,快速搜索也会this result google cached。
希望指出你正确的方向!