2017-09-04 64 views
0

我们有一个分页的网址,如:Web窗体:返回http状态没有找到分页URL的结果?

example.aspx/?pn=1 
example.aspx/?pn=2 
example.aspx/?pn=3 
... 

等。

这是返回产品列表的网络表单URL。当我们没有针对该请求的任何产品时,应该返回到浏览器的什么内容?

我们应该返回回,如:

1. Response.StatusCode = 400; //Bad request 
    Response.End(); 

2. Response.StatusCode = 204; //No Content 
    Response.End(); 

我们应该Respose.End()在这里使用?通知客户端/抓取工具我们在此页面上没有内容的正确方法是什么?

+0

我原以为这是一个适合404的例子 - 特别是考虑到稍后内容可能在该URL上可用(例如,当更多产品被添加到目录中时) –

+0

正如Rowland所述,404 (未找到)将是适当的回应。 [检查出来](https://stackoverflow.com/questions/11746894/what-is-the-proper-rest-response-code-for-a-valid-request-but-an-empty-data)了解更多信息。 – Mehdi

回答

1

让我们假设产品是以JSON数组的形式返回的,那么对这个产品作出明显的反应就是使用Empty数组。

返回404 response该资源不存在,这种说法甚至不可能为这个特定用户询问产品。但实际上,成功返回产品清单是可能的,只是产品清单是空的。这与使用在这种情况下不存在的ID的一个特定产品的检索完全相反。404是正确的。

虽然与204它至少告诉你的用户,该请求是成功的,它没有内容。换句话说,资源DOES存在,但由于某种原因,但服务器选择不包含在它的正文中。

204也可以用来作为对POST请求,其中一些行动是由服务器而无需创建任何新的资源进行了响应(这将意味着一个201CREATED),或它的某种其它原因不有关返回任何资源。

+0

“这完全与使用在这种情况下不存在的ID的一个特定产品的检索404完全相反”。但是,如果当前不存在特定ID,则可能是明天的有效ID ..例如增量ID已生成,直到值100,有人要求105或者如果ID已生成,并记录后来被删除,但客户要求它 – maverick

+0

@maverick,如果我认为你的例子在你的评论中,有人要求删除的记录,我会考虑将它作为'404'发送,为什么因为来自[RFC2616](https://tools.ietf.org/html/rfc2616#section-10.2.5),它清楚地表示“旧资源永久不可用,并且没有转发地址“,所以当服务器不希望泄露请求被拒绝的原因或者没有其他响应适用时,我们使用'404'。 – Webruster

+0

怎么样增量Id..some可能会在未来 – maverick