服务器应该在400次错误请求时返回错误页面或再次呈现表单吗?



我有一个基本的网页应用程序(不是api)与页面和表单。例如,如果用户发送了一个带有无法验证值的for register表单,我将再次呈现表单页面,状态为422,指示错误输入的位置。

然而,当语法形成错误时,应该向用户显示一个错误页面,代码为400错误请求,或者应该再次呈现注册表单页面,消息说请求体格式错误(响应仍然为400)?

我的想法:错误页面的参数:如果前端(客户端)发送POST请求时没有或带有错误的正文,则似乎存在问题。要么前端必须被修复,要么请求体被操纵。如果用户正常发送表单并且前端没有故障,则不应该发生这种情况。

*我怀疑的原因:我不能100%确定这是不可能的,这可能是客户端的临时错误,或者可能是网络问题或其他东西。如果这是合理的,则必须将用户重定向到表单,并提示请求主体错误。他应该可以再试一次。我的相关问题基本上是这样的:在正常的操作流中,服务器是否有可能接收到带有错误正文的请求?

试图将应用程序的每个部分"深度"映射到HTTP状态码是错误的;在大多数情况下,您想要达到的粒度级别要粗得多。当有疑问时,可以使用通用状态码200 OK, 400错误请求和500内部服务错误,当没有更好的匹配。

422 vs 400可以细化到一个粒度级别,这些代码通常是为开发人员而不是最终用户编写的(除非你的最终用户是开发人员)。这可以帮助您浏览日志并弄清楚到底发生了什么。如果表单上有一个错误,我只会为用户呈现一个验证消息,表明出现了错误,或者您可以使用验证进入更多细节。

你可以使用类似于Sentry的东西,它将提供实际错误的堆栈跟踪。

最新更新