3

假设我需要一个查询字符串;例如“项目”。如果该查询字符串由于某种原因丢失,我应该给用户一个 200 错误页面还是“404 Not Found”?

我会赞成 404 但我不太确定。

4

6 回答 6

7

也许你应该给出一个“400 Bad Request”。

由于语法错误,服务器无法理解该请求。客户端不应该在没有修改的情况下重复请求。

有关更多可能性,请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

就像 Chris Simpson 所说,当没有找到对应项目 ID 的项目时,给出“404 Not Found”。

您还可以查看流行的 RESTful api,看看其他人是如何处理这个问题的。例如推特

于 2009-04-14T14:10:56.887 回答
1

好问题。就我个人而言,我会使用 200 并提供一个用户友好的错误来解释问题,但这实际上取决于具体情况。

如果他们确实提供了 itemid 但特定项目不存在,您还会显示 404 吗?

于 2009-04-14T14:10:07.107 回答
1

从可用性的角度来看,我都不会说。

您应该显示一个页面,告诉用户出了什么问题并让他们有机会修复它。

如果链接来自您网站上的另一个页面(或另一个网站),那么一个页面会告诉他们未找到所请求的项目并将他们重定向到适当的页面,也许是让他们浏览项目的页面?

如果用户自己输入查询字符串,那么我不得不问为什么?由于 URI 通常不是用户友好的。

于 2009-04-14T14:10:56.107 回答
1

你应该给用户 200,只有当你得到的 HTTP 请求得到了适当的响应时,即使它只是一个简单的 HTML 表明他们缺少参数。404 代码是当用户代理请求丢失的资源时。

检查此列表以获取更多信息 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

于 2009-04-14T14:11:16.603 回答
-1

给出 500 错误,可能是 501。这将允许浏览器或代码通过现有的 onError 机制来处理它,而不必以某种自定义方式来监听它。

于 2009-04-14T14:10:39.493 回答
-1

我看到这个工作的方式,你应该返回一个 200 - 因为它应该是一个有效的资源。

假设您的 URL 之一是widgets.com/browse.php?itemid=100- 并且该 URL 显示目录中的特定项目。

现在,一个用户输入widgets.com/browse.php——我们期望这个动作是什么?当然,要列出目录中的所有项目(或至少是分页列表)。

重新考虑您的 URL 结构以及目录级别和参数如何相互关联。

于 2009-04-14T14:26:35.367 回答