javascript - 为什么我必须一般指定任何 HTTP 状态代码?它有什么好处?

标签 javascript http

我已经阅读了一些关于 HTTP 状态的文章,但我仍然不确定为什么我应该在我的应用程序中指定它们。假设用户在尝试登录时提供了错误的密码。在我的 express 应用程序中,我可以通过这些方式发送回复:

 res.status(401).json({ message: 'Wrong password' })

res.json({ message: 'Wrong password' })

那么我的应用程序逻辑是基于message值的。 我知道在第二种情况下状态代码将是 200 OK ,但我为什么要关心它?

最佳答案

很多原因。一些我的头顶:

  • 缓存。 2xx responses are cacheable by default.您不应该为错误发送 200 响应,否则用户可能会觉得他们永远无法登录!

  • 与客户端库的兼容性。能够使用 things that are standards compliant 真是太好了,因此您可以执行 .catch() 并向用户显示错误,而不是使用大量自定义逻辑来确定响应是否正确。

  • 状态代码也来自链中的其他代码。您通常不只是在与您的应用程序交谈,而且通常是 a proxy on your end .然后,可能有几个 proxies between the client and you .为什么您的客户端代码必须弄清楚您的应用程序级信令 状态码信令,而它们可以是相同的?问问有卫星互联网的人……他们会告诉你当人们不遵守标准时中间代理会是多么痛苦。

  • 自动错误记录。您肯定使用 some system跟踪系统中的错误,对吗?如果您使用标准的 HTTP 响应代码,它们可以自动分类。

关于javascript - 为什么我必须一般指定任何 HTTP 状态代码?它有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57209067/

相关文章:

javascript - 通过 AJAX 递增复选框 ID 提交表单

javascript - jQuery:如何查找具有特定 id 的 li 标签

http - 我在哪里可以进行模拟 http 调用来学习 Angular2 前端 http 调用

http - 如何重定向到登录页面,但仅当浏览器导航到页面时

javascript - 有没有办法使用 JQuery GetJSON 方法从外部页面获取 HTML?

javascript - 使用 WinJS.UI.ListView,如何在 snapview 中禁用点击动画

javascript - 如何在javascript中调用主函数内的函数

javascript - SVG 曲线到许多小直线

http - 多部分和分块协议(protocol)之间的区别?

Angular 4 http get - 从 url 中删除哈希值