【问题标题】:Easiest RPC client method in PHPPHP中最简单的RPC客户端方法
【发布时间】:2011-02-11 05:30:17
【问题描述】:

我被要求帮助朋友的公司开发一个 Web 应用程序。我的时间非常有限,我在一个条件下不情愿地接受了这个请求。由于大部分逻辑都在后端进行,我建议我将完成完整的后端,让前端开发人员可以简单地与我的后端交互。

我打算用 Java EE 或 Python(使用 Pylons)做后端。在这一点上,这并不重要。我计划让我的后端完全准备好并进行单元测试,这样我的工作完成后就几乎不需要我的输入了。

我知道他们有一个 PHP 程序员,但据我所知,他是一个真正的菜鸟。我希望他基本上以最简单的方式与我的后端服务交互,而他无法“填充”它。它基本上是一个仅限 CRUD 的应用程序。

我可以将后端实现为可通过 XML-RPC 或 SOAP 等 Web 服务访问。甚至可以使用 RESTful API。

然而,我的主要目标是让完全“菜鸟”的 PHP 程序员可以轻松地与之交互而不会感到困惑。最好我什至不想和他说话,因为我通常有一个非常忙碌的日程安排,并且打“支持电话”不是我愿意做的事情。我应该选择哪种方法?我欢迎任何建议和意见!

【问题讨论】:

    标签: php rest soap rpc xml-rpc


    【解决方案1】:

    去过那里,做到了。

    Django 中的后端,PHP 中的前端由“我们做页面”承包商。我使用 JSON 构建了一个类似 REST 的 API,为它们提供了几个 5 行 PHP 函数来访问我的服务作为键值存储。

    在几次错误的开始之后(他们尝试了一个人为的重定向方案,而不是使用我发送给他们的函数),他们得到了它,之后一切都很顺利。

    【讨论】:

    • 我想我现在决定采用 JSON 方式。 :)
    【解决方案2】:

    一定要使用类似rest的实现,并返回查询字符串格式的输出。

    请记住,php 会将类似数组的变量转换为 php 端的数组。

    为您的参数获取一个查询字符串

    输入: p1=v1&p2=v2....

    输出: output1=var1&output[0]=var2;output[2]=var3

    在 php 中访问这个很简单

    <?
       $request['myparam1'] = param; 
       ...
       $webService ="http://path.to.service?".http_build_query($request);
    
       parse_str(file_get_contents($webService),$response);
    
       // response is now an array with you response parameters in it
       // $response['responseParam1'], reponse['responseParam1'] etc
     ?>
    

    【讨论】:

    • 只使用 JSON 在双方都更容易和更可预测
    • 谢谢拜伦。我仍然在决定是否使用 parse_str 和 JSON 之间徘徊。我得好好想想。
    【解决方案3】:

    我个人会选择一个 REST API,可能带有 JSON 响应。对于简单的服务,SOAP 和 XML 可能有点笨拙,即使是最新手的 Web 开发人员也理解访问基本 URL 的概念,即使他们不了解 REST 的整体概念。在 PHP 中有无数种处理 URL 的方法,所以我相信他们能够想出一些东西,即使这是一个 hack 工作而不是一个好的客户端包。

    我也可能会选择 JSON 编码和解码,因为它通常相当简单,而 XML 解析可能有点令人生畏。

    无论您选择哪种格式,我都会至少编写一些有关该服务的基本文档。否则,您将无法逃避支持电话。您的目标消费者必须具有对他可用的远程操作的引用,或发现这些操作的方法。准备好一些示例代码可能需要 10 分钟,而这 10 分钟可以为您节省大量电子邮件。

    【讨论】:

    • 好主意。我确信在这个上使用 RESTful API。至于基本文档,我们将有一个带有屏幕截图模型的需求文档,所以他不会出错。至于 GET/POST 查询字符串上的 JSON 与参数,我认为后者,我将不得不考虑它。谢谢!
    猜你喜欢
    • 2012-01-05
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 2011-03-22
    • 2011-07-27
    • 2016-06-28
    相关资源
    最近更新 更多