javascript - 为什么我通常必须指定任何 HTTP 状态代码?它有什么好处?
问题描述
我已经阅读了一些关于 HTTP 状态的文章,但我仍然不确定为什么我应该在我的应用程序中指定它们。假设用户在尝试登录时提供了错误的密码。在我的快递应用程序中,我可以通过以下方式发送响应:
res.status(401).json({ message: 'Wrong password' })
或者
res.json({ message: 'Wrong password' })
然后我的应用程序逻辑基于该 message
值。我知道在第二种情况下状态码将是200 OK
,但我为什么要关心它呢?
解决方案
很多原因。我的头顶有几个:
缓存。
2xx
默认情况下,响应是可缓存的。 您不应该200
针对错误发送响应,否则用户可能会认为他们永远无法登录!与客户端库的兼容性。能够使用符合标准的东西当然很好,因此您可以做一个
.catch()
并向用户显示错误,而不是使用大量自定义逻辑来确定响应是否良好。状态代码也来自链中的其他代码。您通常不仅与您的应用程序交谈,而且通常是您的代理。然后,客户和您之间可能有多个 代理。为什么您的客户端代码必须同时确定您的应用程序级信号和状态代码信号,因为它们可以是相同的之一?问问有卫星互联网的人......他们会告诉你当人们不遵守标准时,中间代理会带来什么痛苦。
自动错误记录。您肯定会使用某些系统来跟踪系统中的错误,对吗?如果您使用标准 HTTP 响应代码,它们可以自动分类。
推荐阅读
- sql - 如何根据分组值求和的列计算百分比?
- go - 为什么 /user/local/go 在 GoLand 中未被识别为 Go SDK
- javascript - axios API - 等待响应
- directus - directus:手动插入directus_files表后重新生成缩略图
- python - TypeError:没有找到与指定签名匹配的循环,并且为 ufunc inv 找到了强制转换
- mqtt - 为什么 TwinCat 3 Analytics Data Logger 无法连接到我的 MQTT 服务器?
- python - 网络图中从一个节点到所有其他节点的最优最短路径集
- flutter - 如何在 Flutter 中创造全局价值
- javascript - 如何搜索多张纸?
- assembly - RISC-V 陷阱处理程序重入陷阱处理程序中的异常