api端点上的数据验证?你们采取啥方法?
Posted
技术标签:
【中文标题】api端点上的数据验证?你们采取啥方法?【英文标题】:Data validation on api endpoints ? What approach do you guys take?api端点上的数据验证?你们采取什么方法? 【发布时间】:2022-01-21 08:55:26 【问题描述】:要为我的问题提供上下文,请考虑这个示例。我们有三张表(这些都是虚构的)
animal -> [id, name]
animal_breed -> [id, name, animal, userId]
animal_registration_table -> [id, userId, breedId]
现在我见过两种开发者,
-
不验证插入的品种ID 是否确实属于用户。他们只是假设应用程序或前端会向他们发送有效数据,直接将数据输入到 db。
首先通过检查animal_breed 表来检查breedId 是否属于userId
现在我更多的是 2 人。但我想知道什么方法是好的,方法 2 需要额外的查询或检查,或者有没有更好的方法通过在 db 中有约束来做到这一点,如果有,你能帮我指导我应该接受什么样的约束有或任何其他更好的选择,因为我觉得第 1 点不是一个好方法。 (p.s 对 db 的熟练程度不高,因此需要指导和帮助)
【问题讨论】:
【参考方案1】:如果有指定的用户“插入”数据,那么应该检查这个用户是否是实际用户。前端没有,也不应该有这种选择。
现在关于你的第二个问题,
如果 userId 在逻辑上是外键,那么您应该使用 on delete
和 on update
规则设置相应的约束。基本上,您不想以编程方式执行应该是数据库规则的操作。
我不知道我是否涵盖了你的答案,但这是一个很好的话题。
【讨论】:
我们可以在 db 中应用一个约束吗?例如,我们可以有一些类似的东西来向 animal_registration_table 添加数据,breedId 和 userID 有一些约束必须匹配 animal_breed 表的 id 和 userId。如果是这样,您能指导我如何做到这一点...我对 sql 概念不太擅长,仍在尝试每天学习它,希望我的评论有意义以上是关于api端点上的数据验证?你们采取啥方法?的主要内容,如果未能解决你的问题,请参考以下文章
当 HTTP 方法是 Apache .htaccess 上的 OPTIONS 时,如何避免请求基本身份验证?
使用 APIRequestFactory 测试基于令牌的身份验证的正确方法是啥?