我正在开发一个小型Web应用程序,我正在尝试决定是否应该努力从应用程序中发出语义上合适的HTTP状态代码。
我的意思是,Web服务器本身发出适当的响应代码是有意义的。 500 Internal Server Error
用于配置错误的Apache或404 Not Found
用于丢失index.php
或其他任何有意义的内容,因为服务器无法真正做到这一点。
使用303 See Other
或其他实际产生行为的HTTP机制来操纵浏览器也是有意义的。
但是,如果所有发生的事情都是缺少GET
参数,例如,是否有任何理由不遗余力地返回400 Bad Request
?或者如果我的应用程序自己处理所有路由,404 Not Found
怎么样?据我所知,没有任何与这些错误代码相关的行为。
答案 0 :(得分:2)
我的一般意见:如果代码为用户提供可操作的数据,则提供代码。
如果您所做的只是展示内容,那么在大多数情况下,我认为它不那么重要。如果YouTube无法加载视频,我主要关心的是我无法观看视频。它以418
状态失败可能在智力上很有趣,但它并没有真正为我提供任何有用的信息(即使假设一个非愚蠢的失败代码)。
另一方面,如果您允许某种用户与服务器进行交互,则代码变得更加重要。我可能真的关心为什么我的请求失败了,因为我现在可以对它做点什么了。
但是,有些代码是可操作的。 410 Gone
例如:如果我的请求因为那个原因失败了,但我刚回来了一个通用的" Stuff Broke"消息,我可能会多次重复请求,无处可去,并且沮丧地放弃。知道我所寻找的东西不存在对我来说是一件非常有用的事情。
答案 1 :(得分:0)
我认为对于Web服务来说,使用适当的代码进行响应是非常重要的,因为有时使用该服务的开发人员可能不知道什么是错的,或者为什么应用程序停止工作,除非他查看状态代码。