我在这里再次提出一个关于android的新问题,我希望专家帮助我解决这个问题,以不断提高我的能力。
我正在使用改造来制作连接到API的应用程序以添加新内容,我在我的应用程序中使用表单执行此操作并且此表单需要验证,此时我在应用程序中实现了验证器并使用setError显示错误()和requestFocus(),这一切都在app端。
从我的API后端我使用Django与Django Rest Framework,并且我正在制作我的表单和我的序列化器,使用它的优点是,如果我发布无效数据,它将返回我作为每个字段的响应json它是列表中的错误,如下所示:
{
"errors": {
"password": [
"Required field."
],
"email": [
"Required field."
]
},
"error": true
}
在这种情况下我的问题是,处理我的表单验证器发布信息的最佳做法是什么?完全来自应用程序(空字段或无效格式),或使用包含服务器端验证信息的API的响应?
我希望这不是一个糟糕的问题,我只是想知道哪一个是最好的解决方案,他们的优点是缺点。
谢谢
基于API的验证
优点:使用API中的验证可以更容易维护,因为如果其他一些前端应用程序使用它,您不需要再次重新进行验证,也是非常安全的,因为前端验证可以直接绕过使用工具调用API(邮递员等)
缺点:基于API的验证不是实时的,因为您需要先调用API才能知道输入是否有效,如果用户填写完表格并且他已经填写表格,那将对用户造成麻烦/她提出,他/她输入的信息有问题,并重复/再次更新。
应用内验证
优点:应用内验证可以是实时的,它可以告诉用户他/她的输入一旦输入就无效。用户可以跳过用错误信息填写表单的麻烦并等待提交只是为了知道他/她的输入是错误的并再次重复它。
缺点:您可以阅读有关API优点的缺点,每次制作使用相同API的其他应用时,您必须反复执行此操作,并且直接调用API时,它也不安全。 (黑客可以输入他/她想要的任何东西)。
结论:根据我的经验,API必须始终进行验证,以避免黑客直接在其上输入任何内容,如果他/她想要在API端使用验证或他/她,则由前端应用程序决定可以使它在前端本身是实时的。