PHP REST 客户端 [已关闭]

2022-08-30 13:16:07

我正在尝试连接到RESTful Web服务,但我遇到了一些麻烦,尤其是在通过PUT和DELETE发送数据时。使用cURL,PUT需要一个文件来发送,而DELETE只是奇怪。我完全有能力使用PHP的套接字支持编写客户端并自己编写HTTP标头,但是我想知道你们是否曾经使用过或见过用于PHP的REST客户端?


答案 1

因此,事实证明,Zend_Rest_Client根本不是REST客户端 - 例如,它不支持PUT和DELETE方法。在尝试使用它来使用实际的RESTful服务之后,我厌倦了并为PHP编写了一个合适的REST客户端:

http://github.com/educoder/pest

它仍然缺少一些东西,但如果它被拾起,我会投入更多的工作。

以下是 OpenStreetMap REST 服务的用法示例:

<?php

/**
 * This PestXML usage example pulls data from the OpenStreetMap API.
 * (see http://wiki.openstreetmap.org/wiki/API_v0.6)
 **/

require_once 'PestXML.php';

$pest = new PestXML('http://api.openstreetmap.org/api/0.6');

// Retrieve map data for the University of Toronto campus
$map = $pest->get('/map?bbox=-79.39997,43.65827,-79.39344,43.66903');

// Print all of the street names in the map
$streets = $map->xpath('//way/tag[@k="name"]');
foreach ($streets as $s) {
  echo $s['v'] . "\n";
}

?>

目前它使用curl,但我可能会将其切换到HTTP_Request或HTTP_Request2。

更新:看起来很多人都跳到了这个上面。Pest现在支持HTTP身份验证和许多其他功能,这要归功于GitHub上的贡献者。


答案 2

我写了一个名为Guzzle的PHP HTTP客户端。Guzzle是一个HTTP客户端和框架,用于构建REST Web服务客户端。您可以在其网站上找到有关Guzzle的更多信息,或者直接转到github上的源代码:https://github.com/guzzle/guzzle

Guzzle提供了大多数HTTP客户端提供的好东西(更简单的接口,所有HTTP方法和查看请求/响应),但也提供了其他高级功能:

  • 流式处理实体正文
  • 指数退避
  • 内置缓存转发代理
  • 饼干
  • 伐木
  • 托管的持久连接
  • 并行请求
  • 奥特
  • 一个插件架构,允许您实现任意身份验证方案
  • 从 JSON 服务描述文件自动生成客户端 API

唯一的缺点:它需要PHP 5.3.3


推荐