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 deleteon update 规则设置相应的约束。基本上,您不想以编程方式执行应该是数据库规则的操作。

我不知道我是否涵盖了你的答案,但这是一个很好的话题。

【讨论】:

我们可以在 db 中应用一个约束吗?例如,我们可以有一些类似的东西来向 animal_registration_table 添加数据,breedId 和 userID 有一些约束必须匹配 animal_breed 表的 id 和 userId。如果是这样,您能指导我如何做到这一点...我对 sql 概念不太擅长,仍在尝试每天学习它,希望我的评论有意义

以上是关于api端点上的数据验证?你们采取啥方法?的主要内容,如果未能解决你的问题,请参考以下文章

当 HTTP 方法是 Apache .htaccess 上的 OPTIONS 时,如何避免请求基本身份验证?

使用 Passport 对 API 端点进行身份验证

使用 APIRequestFactory 测试基于令牌的身份验证的正确方法是啥?

在使用spring执行rest api之前有啥方法可以验证令牌

使用JWT身份验证缓存API请求

使用邮递员 404 端点发现 api 身份验证