我正在开发自己的 PHP 库,我想从我的 API 调用 RESTful Web 服务。这可以在 PHP 中完成吗?如果可以,这样做的基础是什么?
5 回答
由于 REST 是将 HTTP 协议的相同方法应用到客户端-服务器架构的设计中,而 PHP 已经可以很好地处理 HTTP 协议请求,例如 GET 和 POST。PHP 特别适合简化 REST 服务的开发。
请记住,REST 是已经存在的相同 http 模式的应用程序。
因此,如果您当前有一个执行以下操作的应用程序:
- HTML 表单
- PHP 进程
- 表格中的 HTML 输出
因此,要使其成为 REST,您需要:
接受来自网络的参数。这很容易,因为您将以 get 或 post 的形式接收参数......所以它基本上是相同的。
PHP进程
以JSON或XML输出。就是这样!
很容易。
现在困难的部分是使您将生成的 API(函数和 URL)对程序员友好。
在这种情况下,我建议您以flickr API为例,它对开发人员非常友好,易于猜测,并且具有良好的文档。
有关 API 的更多信息,请查看此演示文稿:How to Design a Good API & Why it Matters (Joshua Bloch)
最后,一个 RESTful API 还应该在有意义的时候实现http 协议的 PUT 和 DELETE 方法
例如,如果您的 api 中有一个删除操作,则该服务应该从 http 协议接收删除方法。而不是作为发布请求的一部分发送操作参数的更常见的事情。
编辑:将“默认情况下 PHP 是 REST”替换为“因为 REST 是将 HTTP 协议的相同方法应用到客户端-服务器架构的设计中,并且 PHP 已经可以很好地处理 HTTP 协议请求,例如 GET 和 POST。 PHP 特别适合简化 REST 服务的开发。”
并且还添加了最后一点,即当该操作对您的 api 有意义时,您应该实施适当的 PUT 或 DELETE 方法。
您可能想查看这篇文章和后续文章: http ://www.gen-x-design.com/archives/create-a-rest-api-with-php/
您的问题非常开放,因此本教程可能是最好的起点。
上面的链接不再有效,请查看本教程:
http://net.tutsplus.com/tutorials/other/a-beginners-introduction-to-http-and-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
(请注意,在查询字符串中提供参数的顺序无关紧要。此外,参数键名和方法名不区分大小写。)
回到术语 REST 的原始来源不会有什么坏处,并确保您理解它的含义。
如果您正在考虑事物的客户端,我建议您查看 Matt Sukowski 的 PEST。
您将在 GitHub 上找到存储库: https ://github.com/educoder/pest
另请查看此线程: PHP REST Clients
2013 年 12 月 13 日更新:
这是一个非常活跃的开源项目,Matt Sukowsky 今年夏天将它交给了新的管理员,因为他觉得自己没有足够的时间,从那时起已经有很多很多的提交。所以 Pest 在 PHP 中做 Rest 比以往任何时候都好 :)