【问题标题】:REST API + Frontend - Validation Best PracticesREST API + 前端 - 验证最佳实践
【发布时间】:2015-12-10 14:37:49
【问题描述】:

我目前正在做一些关于验证的研究(例如用户表单)。

很明显,验证绝对必须在后端进行,以防止“恶意”或恶意输入等。

前端验证会额外增加用户友好性,因为它通常更快,而且我们节省了服务器往返。


我的问题如下: 进行验证是否是一种好习惯,例如仅在服务器端并返回本地化的错误消息,然后由前端显示?

或者它是绝对不行的,并且验证应该始终在双方进行?

即使完成了后端和前端验证,并且由于意外缺少前端验证而在后端发生故障,响应是否应该包含要在前端显示的本地化信息?还是只显示一般的“出现问题”消息?

不知何故,我对来自 API 的本地化错误消息有一种不好的感觉。

【问题讨论】:

标签: api validation rest web-applications error-handling


【解决方案1】:

关于您的主要问题:

My question is the following: Is it good practice to do the validation e.g. only on the server-side and return localized error messages that are then shown by the front end?

正如您所说,前端验证有利于友好,但不仅如此。 看邮政编码验证的例子(它有固定的格式,所以很容易验证)。如果您不在前端进行验证,您可能会向服务器发送许多请求(有点“过载”服务器)并获得响应。这需要时间。在前端,验证是立即进行的。 此外,关于本地化:对于 Web 应用程序,例如在 AngularJS 中,有翻译模块(在 Angular 中有 angular-translate)。

同时,后端验证也是一种很好的做法(没有人希望数据库中有坏数据或软件崩溃)。

我有两个人使用 REST API 的项目(我在 AngularJS 中做了前端,他们在 C#/.NET 中做后端)。我向他们询问有关验证的好消息,但不幸的是我只收到“错误请求”。 对于作为开发人员的我来说,在开发过程中并不好,因为我不知道该消息的含义(我不知道这是我的请求问题还是他们的错误)。此外,我必须向用户显示消息:“表单有问题”(这不友好)——当然,我也有自己的验证。

总结:最好双方都进行验证,而且验证应该详细告知用户问题(但不多)。

【讨论】:

  • 如果我理解正确,您不会在前端显示来自后端的错误消息,而是期望消息能够简明地解释错误是什么,以便前端开发人员可以自己处理,对吗?所以来自后端的消息没有本地化。
  • 在大多数情况下是的,前端不显示后端消息。
  • 在@jsDoggy 上面的回答中,您是说验证(前端和后端)应该简明扼要地告知用户任何问题;但是在您在此评论上方的评论回复中,您说的是“不显示”,我认为不在前端显示后端消息。你能澄清一下你的建议是哪两个吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
  • 1970-01-01
  • 2021-06-19
  • 2020-05-29
  • 1970-01-01
  • 2020-11-12
相关资源
最近更新 更多