【问题标题】:suggestions on how to approach creating a mysql webservice/api关于如何创建 mysql webservice/api 的建议
【发布时间】:2011-05-26 18:48:31
【问题描述】:

如果我的措辞有误,请提前道歉,因为我不太清楚如何解释我想要什么,所以我只描述最终结果。

我有一个名为 socialcalc 的基于 php 的 excel 工具(之前是 wikicalc)。我想允许用户连接到数据库并将实时数据拉到工作表上(这样他们就可以对其进行计算)。

我知道 socialcalc 肯定会查询 mysql,但我正在尝试找出最有效的方法。让它直接查询会更好吗?还是我应该让它查询数据库并获取一个 xml 文件?或者您会建议哪些其他方式是允许对数据进行读取访问的有效且安全的方式?

我们正在从头开始构建很多这种顶层 socialcalc,因此对所有解决方案都非常开放,但最终,我们希望它能够为其他服务提供动力。

更新:澄清一下,我正在寻找有关使用 SOAP/XML 的建议,而不是直接查询数据库或使用 HTTP POST/GET 等。您建议使用哪种类型的服务层或何时考虑哪些因素选择?

【问题讨论】:

    标签: php javascript mysql web-services api


    【解决方案1】:

    “简单胜于复杂。”

    你当然可以在你的应用程序和 MySQL 之间实现一个 Web 服务层,但是问问自己为什么你会想要这个。您可能想要它,因为:

    1. 您计划在未来某个时候更改后端系统,并且不希望重构前端应用程序中的业务逻辑

    2. 您希望将后端数据公开给其他应用程序并为此提供通用接口

    3. 您想在中间层实现 smoe 类型的缓存/持久化策略

    所有这些都是在您的应用程序和数据库之间使用 Web 服务层的有效且充分的理由。当然,还有更多有效、充分的理由。

    如果您想不出应该实现 Web 服务层的原因,那就别想了,就这么简单。当有充分的理由时,您总是可以决定稍后再做。


    编辑:

    所以您决定继续使用 Web 服务...恭喜!我认为在这种情况下,您应该查看两个关键框架以节省大量时间:

    1. 获得一个可以生成绝大多数 CRUD 逻辑的良好 ORM 框架。 Doctrine 是 PHP 的流行选择。

    2. 使用 Web 服务框架来实现您的界面和业务逻辑。我过去曾使用Zend Framework 完成此操作,因为它们通过 REST 支持 XML 和 JSON 有效负载。如果您需要严格的数据验证要求,XML 和 SOAP 非常好,但如果您是唯一使用自己的 Web 服务的人,则无需对自己施加此类限制,因为您知道自己的要求。在这种情况下,JSON 应该就足够了。

    顺便说一句,我在之前的另一个问题中通过 Zend 讨论过 RESTful 服务:

    lightweight RESTful PHP server

    【讨论】:

    • 感谢您的回答,AJ。考虑它的方式真的很有帮助,我已经决定,因为我想尽快提供更多的服务,所以我需要一个 Web 服务层来为我的用户/开发人员抽象一些数据库内容。我正在寻找有关如何执行此操作以及使用什么技术(肥皂、http 帖子等)的建议。
    【解决方案2】:

    我认为最好的方法是使用分步操作。

    9月一号

    让用户在他的 Excel 工作表中选择他想要实现的数据。如何做到这一点取决于您。

    第二步

    将用户的选择提交给自己创建的 SQL API。此 API 将检查输入是否有注入等,并将执行所有查询和数据检索。

    第三步

    将检索到的数据发送到将创建 excel 文件的类。

    第四步

    将创建的excel文件发送给用户。

    其中最重要的部分是 SQL api。这是一个处理来自用户的所有输入以及与数据库通信的类。它可以使用普通的 SQL 语句,但您可以使用它来验证所有数据。

    希望这对你有用。

    【讨论】:

    • 谢谢,我正在考虑这个问题。我最初想为每个单元格发送一个 http POST/GET 请求,并且仅在数据更新时才刷新。但由于我是用淀粉设计的,所以我打算借此机会奠定正确的基础。
    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    相关资源
    最近更新 更多