关于如何创建mysql-webservice/api的建议


suggestions on how to approach creating a mysql webservice/api

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

我有一个基于php的excel工具,叫做socialcalc(以前是wikicalc)。我想允许用户连接到数据库并将实时数据拉到工作表上(这样他们就可以在上面运行计算)。

我知道socialcalc肯定会查询mysql,但我正在努力找出最有效的方法。允许它直接查询它更好吗?或者我应该让它查询数据库并得到一个xml文件作为结果?或者,您认为还有什么其他方法是允许对数据进行读取访问的有效和安全的方法?

我们正在从头开始构建很多这种ontop社交计算,所以对所有解决方案都非常开放,但最终,我们希望它能为其他服务提供动力。

更新:为了澄清,我正在寻找使用SOAP/XML的建议,而不是直接查询数据库或使用HTTPPOST/GET等。。您建议使用哪种类型的服务层,或者在选择时需要考虑哪些因素?

"简单胜于复杂。"

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

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

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

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

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

如果您想不出应该实现Web服务层的原因,那么就不要,就这么简单。你总是可以在有充分理由的时候决定推迟。


编辑:

所以您决定继续使用Web服务。。。祝贺!我认为在这种情况下,你应该考虑两个关键的框架来节省你很多时间:

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

  2. 使用Web服务框架来实现您的接口和业务逻辑。我过去使用Zend框架做过这件事,因为它们通过REST支持XML和JSON有效负载。如果您需要严格的数据验证要求,XML和SOAP非常好,但如果您是唯一一个使用自己的Web服务的人,您不需要对自己施加这样的限制,因为您知道自己的要求。在这种情况下,JSON就足够了。

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

轻量级RESTful PHP服务器

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

9月1日

让用户在excel表中选择他想要实现的数据。怎么做取决于你。

第二步

将用户的选择提交给自己创建的SQL API。这个API将检查注入等的输入,并在检索数据时进行所有查询。

第三步

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

第四步

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

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

希望这对你有用。