rmccue/requests

一个用PHP编写的,面向人类的HTTP库。

v2.0.12 2024-07-08 08:10 UTC

README

CS Lint Test codecov.io

Requests是一个用PHP编写的HTTP库,面向人类。它大致基于出色的Requests Python库的API。Requests采用ISC许可(类似于新BSD许可),并且没有依赖项,除了PHP 5.6.20+。

尽管PHP被用作网络语言,但其发送HTTP请求的工具却严重不足。cURL至少有一个有趣的API,而且你并不总是能依赖于它的可用性。套接字只提供低级访问,并且需要你自己构建大部分HTTP响应解析。

我们都有更重要的事情要做。这就是为什么Requests应运而生。

$headers = array('Accept' => 'application/json');
$options = array('auth' => array('user', 'pass'));
$request = WpOrg\Requests\Requests::get('https://api.github.com/gists', $headers, $options);

var_dump($request->status_code);
// int(200)

var_dump($request->headers['content-type']);
// string(31) "application/json; charset=utf-8"

var_dump($request->body);
// string(26891) "[...]"

Requests允许你发送HEADGETPOSTPUTDELETEPATCH HTTP请求。你可以添加头部、表单数据、多部分文件和基本数组中的参数,并以相同的方式访问响应数据。Requests根据你的系统可用性使用cURL和fsockopen,但将所有糟糕的东西抽象出来,提供了一个一致的API。

特性

  • 国际域名和URL
  • 浏览器风格的SSL验证
  • 基本/摘要身份验证
  • 自动解压缩
  • 连接超时

安装

使用Composer安装

如果你使用Composer来管理依赖项,你可以使用它添加Requests。

composer require rmccue/requests

或者

{
    "require": {
        "rmccue/requests": "^2.0"
    }
}

从GitHub安装源代码

要安装源代码

$ git clone git://github.com/WordPress/Requests.git

接下来,在您的脚本中包含自动加载器

require_once '/path/to/Requests/src/Autoload.php';

你可能还想注册自动加载器

WpOrg\Requests\Autoload::register();

从zip/tarball安装源代码

或者,你可以获取一个tarballzipball

$ curl -L https://github.com/WordPress/Requests/tarball/stable | tar xzv
(or)
$ wget https://github.com/WordPress/Requests/tarball/stable -O - | tar xzv

使用类加载器

如果你使用类加载器(例如,Symfony Class Loader)进行PSR-4风格的类加载

$loader = new Psr4ClassLoader();
$loader->addPrefix('WpOrg\\Requests\\', 'path/to/vendor/Requests/src');
$loader->register();

文档

最好的起点是基于文本的文档,它将指导你使用Requests。

之后,请参阅\WpOrg\Requests\Requests::request()的文档,其中所有参数都有详细的说明。

Requests使用100% PHPDoc进行文档记录。如果你发现任何问题,请创建一个新问题

测试覆盖率

Requests致力于通过大量测试实现库的100%代码覆盖率。我们还没有完全达到这个目标,但我们已经非常接近了。

Requests 和 PSR-7/PSR-18

PSR-7 定义了表示HTTP消息的通用接口。 PSR-18 定义了发送HTTP请求和接收HTTP响应的通用接口。

PSR-7 和 PSR-18 都是 Requests 构想之后的产物。目前,我们还没有计划在 Requests 库中添加原生 PSR-7/PSR-18 实现。

然而,令人惊叹的 Artur Weigandt 创建了一个 软件包,它允许您将 Requests 作为PSR-7兼容的PSR-18 HTTP客户端使用。如果您对PSR-7/PSR-18兼容版本的Requests感兴趣,我们强烈建议您查看 此软件包

贡献

我们非常欢迎对这个库的贡献。请阅读贡献指南以开始。