1

我是 Web 服务和 Web API 领域的新手。我注意到大多数公司都提供基于 XML 或 JSON 的连接,这些连接基本上从他们的数据库中获取数据并将其编码为他们选择的格式。我的问题是,为什么我没有看到有人提供某种 SQL 连接?

一开始我以为是安全。但是使用 MySQL,您可以将用户访问权限一直限制到特定列。您可以允许他们仅查看或仅插入。您可以创建视图和存储过程来执行连接或掩盖您真正的后端结构。您可以使用 ssl 连接对传输的数据进行正确编码。所以我真的认为唯一的区别是风格。在我看来人们宁愿让我写

$conn->getWidgetAttr('widgetName');

而不是

SELECT widgetName FROM widgets;

有人可以告诉我我在这里缺少什么吗?

4

1 回答 1

4
  1. 配置复杂性。对于所有可能的用例,很难为所有用户配置权限。
  2. 安全。暴露数据库连接和查询是不安全的,并且提供了 sql 注入/漏洞攻击的广泛可能性。
  3. 合同稳定性。隐藏有关如何存储在数据库中的项目的实现细节允许您在不破坏现有客户端的情况下更改底层存储。例如,在某一时刻,您可能决定将 sql server 替换为 mongodb。
  4. 防火墙问题。Http 连接广泛可用,端口 80 对大多数使用 web api 的操作都是开放的,而暴露 sql server 端口(默认 1433)可能会增加额外的部署成本。
于 2013-03-26T19:49:18.487 回答