代码之家  ›  专栏  ›  技术社区  ›  Olaj

如果缺少querystring,是否给用户一个404?

  •  2
  • Olaj  · 技术社区  · 16 年前

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

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

    6 回复  |  直到 16 年前
        1
  •  7
  •   Leo Lännenmäki    16 年前

    也许你应该给出一个“400个错误的请求”。

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

    http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html 更多的可能性。

    就像克里斯·辛普森说的,如果没有找到对应项目ID的项目,请给出“404未找到”。

    您还可以检查流行的RESTfulAPI,看看其他人是如何处理这个问题的。例如 Twitter .

        2
  •  1
  •   Chris Simpson    16 年前

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

    如果他们提供了itemID,但特定的项不存在,您还会显示404吗?

        3
  •  1
  •   Ragoczy    16 年前

    从可用性的角度来看,我也不会这么说。

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

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

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

        4
  •  1
  •   Azder    16 年前

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

    查看此列表以了解更多信息 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

        5
  •  -1
  •   Bjorn    16 年前

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

        6
  •  -1
  •   Michael Wales    16 年前

    在我看来,这是有效的,你应该返回一个200-因为它应该是一个有效的资源。

    假设你的一个网址是 widgets.com/browse.php?itemid=100 -这个URL在您的目录中显示一个特定的项目。

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

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

    推荐文章