gnujavasergio/httpful

一个可读的、链式的、REST友好的PHP HTTP客户端

0.2.21 2018-02-23 21:35 UTC

README

Build Status Total Downloads

Httpful 是一个适用于 PHP 5.3+ 的简单 Http 客户端库。它注重可读性、简单性和灵活性——基本上提供完成任务的功能和灵活性,并使这些功能易于使用。

特性

  • 支持可读的 HTTP 方法(GET、PUT、POST、DELETE、HEAD、PATCH 和 OPTIONS)
  • 自定义头部
  • 自动“智能”解析
  • 自动负载序列化
  • 基本认证
  • 客户端证书认证
  • 请求“模板”

预览

以下是一些可以刺激你食欲的东西。搜索包含 "#PHP" 的推特 API,为了好玩加了一个 trivial header。请注意,库自动将响应解释为 JSON(如果需要可以覆盖此设置)并将其解析为对象数组。

// Make a request to the GitHub API with a custom
// header of "X-Trvial-Header: Just as a demo".
$url = "https://api.github.com/users/nategood";
$response = \Httpful\Request::get($url)
    ->expectsJson()
    ->withXTrivialHeader('Just as a demo')
    ->send();

echo "{$response->body->name} joined GitHub on " .
                        date('M jS', strtotime($response->body->created_at)) ."\n";

安装

Phar

一个 PHP Archive(或 .phar)文件可用于 下载。只需 下载 .phar 文件,将其放入您的项目,就像包含任何其他 php 文件一样。 此方法适用于较小项目、一次性脚本和快速 API 破坏

include('httpful.phar');
$r = \Httpful\Request::get($uri)->sendIt();
...

Composer

Httpful 符合 PSR-0 规范,可以使用 composer 安装。只需将 nategood/httpful 添加到您的 composer.json 文件中。 Composer 是 PEAR 的合理替代品。它非常适合管理大型项目的依赖关系

{
    "require": {
        "nategood/httpful": "*"
    }
}

从源代码安装

由于 Httpful 符合 PSR-0 规范,您还可以简单地克隆 Httpful 仓库并使用兼容 PSR-0 的自动加载器来加载库,例如 Symfony 的。或者您可以使用 Httpful 内置的兼容 PSR-0 的自动加载器(只需 require("bootstrap.php"))。

构建您的 Phar

如果您想构建自己的 Phar Archive,可以使用包含的 build 脚本。确保您的 php.iniphar.readonly 设置的值为 Off 或 0。此外,您还需要在项目根目录中创建一个空的 downloads 目录。

查看更多!

您可以查看 Httpful 登录页面 了解更多信息,包括许多示例和 文档

贡献

Httpful 非常鼓励发送拉取请求。在提交拉取请求时,请

  • 所有拉取请求都应针对 dev 分支(而不是 master
  • 确保您的代码遵循 编码规范
  • 请使用软制表符(四个空格)而不是硬制表符
  • 确保您为您的更改添加适当的测试覆盖率
  • 通过 phpunit ./tests 在测试目录中运行所有单元测试
  • 在适当的地方添加注释,并添加描述性的拉取请求消息

变更日志

0.2.20

  • 小改进:将响应构建逻辑移入单独的函数 PR #193

0.2.19

  • 新功能:在发送之前添加钩子 PR #164
  • 次要描述性连接异常 PR #166

0.2.18

0.2.17

  • 特性 PR #144 向 Response 类添加额外参数,以指定关于请求/响应的额外元数据(例如,重定向次数)。

0.2.16

  • 特性 添加了对 whenError 的支持,用于定义在发生错误时触发的自定义回调。这对于记录或覆盖默认错误日志行为非常有用。

0.2.15

  • 特性 I #131 支持 SOCKS 代理

0.2.14

  • 特性 I #138 添加了 XML 请求构建的替代选项。在下一个主要版本中,这可能会取代旧版本。

0.2.13

  • 重构 I #121 在 curl 错误上抛出更具描述性的异常
  • 重构 I #122 请求中的代理清理更好
  • 重构 I #119 更好地记录 Request::body 上的 mimeType 参数
  • 其他代码和测试清理

0.2.12

  • 重构 I #123 支持新的 curl 文件上传方法
  • 特性 I #118 5.4 HTTP 测试服务器
  • 修复 I #109 错别字
  • 修复 I #103 处理 strictSsl 模式下的 CURLOPT_SSL_VERIFYHOST

0.2.11

  • 修复 I #99 防止 HEAD 请求挂起

0.2.10

  • 修复 I #93 修复了内容长度设置错误的边缘情况

0.2.9

  • 特性 I #89 支持 multipart/form-data(即文件上传)!感谢 @dtelaroli!

0.2.8

  • 修复 对 Pull Request 86 的修正通知

0.2.7

  • 修复 I #86 使用代理时移除 Connection Established 标头

0.2.6

  • 修复 I #85 空内容长度问题已解决

0.2.5

  • 特性 I #80 I #81 通过 useProxy 方法添加代理支持。

0.2.4

  • 特性 I #77 设置超时(秒)的便利方法 $req->timeoutIn(10);
  • 修复 I #75 I #78 检查是否正在使用摘要认证的故障

0.2.3

  • 修复 覆盖默认 MIME 处理器
  • 修复 PR #73 解析 HTTP 状态代码

0.2.2

  • 特性 支持将 JSON 响应解析为关联数组而不是对象
  • 特性 更好地支持在 MIME 处理器上设置构造函数参数

0.2.1

  • 特性 PR #72 允许支持自定义 Accept 标头

0.2.0

  • 重构 PR #49 将标题拆分到自己的类中
  • 重构 PR #54 增加更具体的异常
  • 修复 PR #58 解决在空 XML 响应上抛出错误的问题
  • 特性 PR #57 增加对摘要身份验证的支持

0.1.6

  • 通过重载 followRedirects(int max_redirects) 方法设置最大重定向次数
  • 符合标准的 Accepts 报头修复
  • 通过 Composer 安装时修复引导过程的问题

0.1.5

  • 使用 DIRECTORY_SEPARATOR 常量 PR #33
  • PR #35
  • 将原始报头属性引用添加到响应中。
  • 组合请求报头并将原始报头添加到请求对象中。
  • 修复了响应中的错误并添加了更多注释以提高可读性。
  • 修复了报头解析,以允许最少的(仅状态行)解析,并根据RFC2616处理实际以CRLF结束的报头。
  • 为所有可接受场景添加了完美的测试 Accept: 报头,详情请见 @b78e9e82cd9614fbe137c01bde9439c4e16ca323。
  • 添加默认 User-Agent 报头
  • User-Agent: Httpful/0.1.5 + curl 版本 + 服务器软件 + PHP 版本
  • 要绕过此“默认”操作,只需向请求报头中添加 User-Agent 即可,即使是空 User-Agent 也足够,并且足以产生预期效果。
  • 完成了新增功能的测试单元。
  • 添加了 phpunit 覆盖率报告,并帮助 phpunit 更容易地自动定位测试。

0.1.4

  • 添加 CSV 处理支持 PR #32

0.1.3

  • 在 JsonParser 和 XmlParser 中处理空响应

0.1.2

  • 添加了对设置 XMLHandler 配置选项的支持
  • 添加了覆盖 XmlHandler 和注册自定义解析器的示例
  • 删除了 httpful.php 下载(已弃用,改为 httpful.phar)

0.1.1

  • 修复序列化默认情况并添加 phpunit 测试

0.1.0

  • 添加了对注册 MIME 处理器的支持
  • 创建了一个必须由所有 MIME 处理器扩展的 AbstractMimeHandler 类型
  • 将解析/序列化逻辑从 Request/Response 类中提取出来,放入它们各自的 MIMEHandler 类中
  • 添加了注册新 MIME 处理器以处理 MIME 类型的能力