Thi*_*ter 95 http http-status-codes
我很好奇什么是"项目不存在"页面最合适的HTTP状态代码.
如果页面本身不存在,我显然会使用404.但是,我的一个页面有一个userid参数(它是一个"编辑用户"页面),如果没有给定用户ID的用户,我正在显示错误页面,但我也想发送一个4xx状态标题(因为"200 OK"不适合).
我猜404会好的,因为它"找不到"而不是"找不到文件",但我想知道这个案例是否有更好的代码.
bma*_*ies 116
使用模糊的HTTP错误代码过于聪明是一个坏主意.浏览器有时会以无益的方式做出反应,使情况模糊不清.坚持404.
Eig*_*uru 38
404返回代码实际上意味着"未找到资源",并且适用于发出请求但不满足的任何实体.因此,它同样适用于页面,页面子部分以及页面上存在具有特定请求的任何项目.
所以404是在这种情况下使用的正确代码.请注意,它并不适用于"服务器没有发现",这是一种不同的情况,其中一个请求发出,但没有回答所有,而不是回答,但没有请求的资源.
Ric*_*man 10
204:
无内容。” 此代码表示服务器已成功处理请求,但不会返回任何内容
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204
204当未找到该项目时,这是适当的解决方案,因为404状态代码甚至会抛出未创建的API。
404当请求的 API 不可用时,状态代码会自动出现。导致 404 页面的链接通常称为损坏的链接 或死链接,并且可能会受到链接失效的影响。
204状态代码应该是未找到该项目时的状态代码,这意味着您的请求 已成功处理并且未找到内容。
这取决于userid是资源标识符还是其他参数.如果是,那么可以返回404,如果没有,你可能会返回其他代码,如
400 (bad request) ? indicates a bad request
要么
412 (Precondition Failed) e.g. conflict by performing conditional update
免费InfoQ Explores:REST书中的更多信息.
如果页面本身不存在,我显然会使用 404。
你说的有点令人困惑,但我不得不假设你正在开发一个 API 后端。
问题在于,无论是谁使用 API 端点,都可能会在以下两种方面感到困惑:
所以关键是,他们如何知道哪个是正确的假设?
嗯,答案很简单。始终尝试将正文附加到从代码返回的任何错误。服务器自动返回的错误没有正文。因此,请尝试附加一个可以记录的正文,以便他们能够使用正文的内容来区分代码返回的错误和服务器错误。
但简而言之,404 是返回的正确状态,但请尝试向其附加一个正文,以表明返回404的原因。
一个例子可以是:
// For illustration I'm just gonna use C#
Return NotFound(new { errorMessage: "Item requested was not found" });
Run Code Online (Sandbox Code Playgroud)
这里,NotFound返回404状态码,参数是一个类似 的对象
{ errorMessage: "some reason for the error"}。这样,您可以随时检查错误是否返回正文,并且您知道它是从代码返回的。否则,找不到资源(链接)。
| 归档时间: |
|
| 查看次数: |
73573 次 |
| 最近记录: |