Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
你能在PHP中使用REST吗?如果是,怎么做?_Php_Rest_Restful Architecture - Fatal编程技术网

你能在PHP中使用REST吗?如果是,怎么做?

你能在PHP中使用REST吗?如果是,怎么做?,php,rest,restful-architecture,Php,Rest,Restful Architecture,我正在开发自己的PHP库,我想从API调用RESTful web服务。这可以用PHP实现吗?如果可以,那么实现这一点的基础是什么?您可能想看看本文和后续文章: 你的问题非常开放,因此本教程可能是最好的起点 上面的链接不再有效,请查看本教程: 回到前面,并确保您理解这意味着什么。因为REST是HTTP协议的相同方法在客户机-服务器架构设计中的应用,PHP已经很好地处理HTTP协议请求,如GET和POST。PHP特别适合于简化REST服务的开发 记住REST是已经存在的相同http模式的应用程序

我正在开发自己的PHP库,我想从API调用RESTful web服务。这可以用PHP实现吗?如果可以,那么实现这一点的基础是什么?

您可能想看看本文和后续文章:

你的问题非常开放,因此本教程可能是最好的起点

上面的链接不再有效,请查看本教程:


回到前面,并确保您理解这意味着什么。

因为REST是HTTP协议的相同方法在客户机-服务器架构设计中的应用,PHP已经很好地处理HTTP协议请求,如GET和POST。PHP特别适合于简化REST服务的开发

记住REST是已经存在的相同http模式的应用程序

因此,如果您当前有一个执行以下操作的应用程序:

  • HTML表单
  • PHP进程
  • 表格中的HTML输出
  • 因此,要让它休息,您需要:

  • 从web接受参数。这很容易,因为您将以get或post方式接收参数。。。所以基本上是一样的

  • PHP进程

  • JSONXML格式输出。就这样

    这很容易

  • 现在困难的部分是使您将生成的API(函数和URL)对程序员友好

    在这种情况下,我建议您看看,作为一个例子,它对开发人员非常友好,易于猜测,并且具有良好的文档

    有关API的更多信息,请参阅本演示文稿:

    最后,RESTful API还应该在有意义时实现http协议的PUT和DELETE方法

    例如,如果您的api中有一个delete操作,则所述服务应该从http协议接收delete方法。而不是作为post请求的一部分发送操作参数

    编辑:将“Php默认为rest”替换为“因为rest是HTTP协议相同方法在客户机-服务器架构设计中的应用,Php已经能够很好地处理HTTP协议请求,如GET和POST。Php特别适合于简化rest服务的开发。”


    并且还添加了最后一条注意事项,即当适当的PUT或DELETE方法对您的api有意义时,您应该实现该方法。

    如果您考虑的是客户端的问题,我建议查看Matt Sukowski的PEST

    您将在GitHub上找到存储库:

    还可以查看此线程:

    2013年12月13日更新:

    这是一个非常活跃的开源项目,Matt Sukowsky在今年夏天把它交给了新的管理员,因为他觉得自己没有足够的时间,从那时起,已经有了很多很多承诺。因此,在PHP中使用Rest比以往任何时候都好:)

    我开发了一个与PHP原生SoapServer类的Rest等价的类

    您只需包含RestServer.php文件,然后按如下方式使用它

    class Hello
    {
      public static function sayHello($name)
      {
        return "Hello, " . $name;
      }
    }
    
    $rest = new RestServer(Hello);
    $rest->handle();
    
    然后你可以这样打电话:

    http://myserver.com/path/to/api?method=sayHello&name=World
    

    (请注意,在查询字符串中提供参数的顺序无关紧要。此外,参数键名称和方法名称不区分大小写。)

    -1:对不起,默认情况下没有语言是REST。例如,在REST中,POST请求与GET请求非常不同,您还需要支持DELETE和PUT。@吉姆·费兰斯-为什么必须支持DELETE?@elviejo-如果您查看stackoverflow的url,您将看到REST url。这不是PHP在解析过程中默认做的事情,因为没有问号。@James Black StackOverflow进行了漂亮的url重写,这一事实并没有让它多少休息。so.com/questions/1628628是一个有效的REST调用,如下所示:so.com/questions.php?id=1628628这两个调用都使用http协议的get方法。@吉姆·费兰斯:在我的回答中添加了一些澄清,试图解决您的问题。+1:抵消否决票,这是合理的(如果含糊不清的话)问题。我想他问的是关于处理PUT和DELETE请求方法的问题,所以我不认为这是一个无效的问题。让这个问题继续问吧,你们这些固执的人;你想证明什么?它有超过43000个视图,是PHP+REST的第五个Google结果。停止扼杀这个网站所代表的东西——毫无意义的问题。@kaziTanvirAhsan——谢谢你,加入一个更好的链接为什么这个类不区分HTTP协议?我没有必要在我最初使用它的应用程序中使用它。你可以随意地用叉子叉它,然后改进它。