我想听听您的经验吗?如何最好地创建一个API,用于从数据库中检索数据。如果您发送 View 名称或过程名称,那么出于安全考虑,这对Tankne来说是完全不可能的。所以我想知道是否有人对此有经验或想法?

例如,我是否应该有一个字段来告诉连接API的用户有权访问什么?表和行访问。

最佳答案

我会试一试。

您已经提到了Web API,所以假设您使用的是Web API,这意味着您在数据库之上具有REST API。

要做的事情:

  • 提出要向用户公开的数据模型。这可能与数据库模型在各种方面有所不同。如果您是一家商店,则可能有2-3个不同的表来存储产品,但是您将希望通过一个API调用公开“产品”。
  • 使用户面对数据模型后,就开始编写测试。您需要为Web API Controller 进行单元测试,并且需要找到一种模拟正在进行的数据库调用的方法。测试是值得的!
  • 为了安全起见,您有很多选择。您可以从HMAC(https://en.wikipedia.org/wiki/Hash-based_message_authentication_code)或OAuth(Best way to create a TOKEN system to authenticate web service calls?)甚至JWT(Secure WebAPI with a JWT)之类的东西中进行选择。
  • 验证用户身份后,可以为其分配权限。他们可以读取,写入和更新,具体取决于他们有权访问的内容。您可以有一个数据库表来潜在地控制它。
  • 我建议您提前考虑版本控制。我的建议是始终拥有两个版本的API-当前版本和以前版本。您部署了该API,并且在您首次替换它时,就支持不推荐使用的API和新的API。不要尝试支持两个以上的版本。
  • 在通过Web API发送数据之前,请尽力编写某种抽象数据库的接口(interface)。如果需要,这可以帮助您将来完全替换数据库。它还有助于单元测试。
  • 09-25 18:28
    查看更多