Guzzle:PHP 的 HTTP 请求利器

Guzzle 是 PHP 生态中使用最广的 HTTP 客户端库,GitHub 上收获了超过 23,000 个 Star。

正文顶部截图

PHP 原生的 curl 函数写起来比较繁琐,处理 cookies、上传文件、流式传输这些场景时,代码容易变得冗长。Guzzle 就是为了解决这类问题。

核心特性

Guzzle 的接口很直白,发一个 GET 请求只需要几行代码:

$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://httpbin.org/get');

echo $response->getStatusCode(); // 200
echo $response->getHeaderLine('content-type'); // 'application/json; charset=utf8'
echo $response->getBody();

同步和异步请求用同一个接口:

$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
$promise = $client->sendAsync($request)->then(function ($response) {
    echo $response->getBody();
});
$promise->wait();

README区域截图

Guzzle 的设计要点:

  • PSR-7 兼容:请求、响应、流都遵循 PSR-7 标准接口,可以和其他 PSR-7 库配合使用
  • PSR-18 支持:遵循 HTTP 客户端互操作标准,不同客户端之间可以替换
  • 传输层无关:不依赖 cURL、PHP streams 或 socket 的具体实现,底层可以自由切换
  • 中间件机制:通过中间件对请求和响应做拦截、修改、日志记录等操作

安装

通过 Composer 安装,一行命令:

composer require guzzlehttp/guzzle

版本选择

目前 Guzzle 维护的是 7.x 版本,要求 PHP >= 7.2.5 且 < 8.6。3.x 到 6.x 版本都已经停止维护,新项目直接用 7.x 即可。

Guzzle 从 2011 年开始维护至今,是 PHP HTTP 客户端的事实标准。项目中需要调接口、对接第三方服务的场景,Guzzle 基本是绕不开的选择。

P HTTP 客户端的事实标准。项目中需要调接口、对接第三方服务的场景,Guzzle 基本是绕不开的选择。

更多推荐