REST API + 前端 - 验证最佳实践

4

我目前正在进行有关验证(例如用户表单)的研究。

很明显,为了防止“恶意意图”或恶意输入等情况,必须在后端执行验证。

在前端进行验证还可以增加用户友好性,因为它通常更快,我们可以避免服务器往返。


我的问题如下:

仅在服务器端执行验证并返回本地化的错误消息以供前端显示是否是一种良好的实践?

还是说这是绝对不可行的,验证应该始终在两个方面同时进行?

即使进行了后端和前端验证,并且由于意外缺少前端验证而在后端发生故障,响应是否应包含本地化信息以在前端显示?或者只会显示一个一般性的“出现了错误”的消息?

某种程度上,我对API中的本地化错误消息有一种不好的感觉。


这个回答解决了你的问题吗?JavaScript:客户端与服务器端验证 - gmagno
1个回答

4
关于您的主要问题:
我的问题是:只在服务器端进行验证并返回本地化的错误消息以供前端显示是否是好的做法?
正如您所说,前端验证不仅可以友好,而且还有其他方面的好处。以邮政编码的验证为例(它有固定的格式,因此易于验证)。如果您不在前端进行验证,则可能会向服务器发送很多请求(这会有点“过载”服务器),并获得响应,这需要时间。在前端,验证可以立即完成。此外,在网络应用程序中进行本地化:例如,在AngularJS中有翻译模块(在Angular中有angular-translate)。
同时,在后端进行验证也是一种好的惯例(没有人想在数据库中拥有错误数据或崩溃软件)。
我曾经使用REST API和两个人员进行了一个项目(我在AngularJS中进行了前端开发,他们使用了C#/.NET进行了后端开发)。我向他们询问关于验证的良好信息,但不幸的是我只得到了“坏的请求”这样的回答。对于我作为开发者来说,在开发过程中这不是好的情况,因为我不知道那个消息的意思(我不知道它是我的请求有问题还是后端的错误)。此外,我还必须为用户显示消息:“表单有问题”(这不够友好),当然,我也有自己的验证。
总之:最好在两个方面都进行验证,并且验证应该详细地向用户报告问题(但不要太详细)。

1
如果我理解正确的话,您不会在前端显示后端的错误消息,而是期望提供简明扼要的消息来解释错误的原因,以便前端开发人员自行处理,对吗?因此,后端消息不需要本地化。 - JDC
在大多数情况下,前端不会显示后端消息。 - jsDoggy
1
在你上面的回答中,@jsDoggy,你似乎在说验证(前端和后端)应该简明地告知用户任何问题;但在你上面的评论回复中,你说“不显示”,我认为这是指不要在前端显示后端消息。你能澄清一下你建议的是其中哪一个吗? - Andre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接