themy3/httpful

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

维护者

详细信息

github.com/TheMY3/httpful

主页

源代码

安装: 532

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 298

0.4.0 2022-11-14 06:58 UTC

This package is auto-updated.

Last update: 2024-09-14 11:09:15 UTC


README

Build Status Total Downloads

nategood/httpful 兼容 PHP 8.1 的分支。

Httpful 是一个针对 PHP 7.2+ 的简单 HTTP 客户端库。它强调可读性、简单性和灵活性——基本上提供完成任务的特性和灵活性,并使这些特性非常易于使用。

特性

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

预览

这里有一些内容可以激发你的兴趣。搜索包含 "#PHP" 的推特 API 中的推文。随意添加一个简单的头部。请注意,库会自动将响应解析为 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";

安装

Composer

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

{
    "require": {
        "themy3/httpful": "^0.4"
    }
}

从源代码安装

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

构建你的 Phar

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

贡献

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

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

变更日志

0.4.0

  • 添加 PHP 8.1 兼容性

0.3.2

  • 重构 PR #276 添加正确子类化、更具描述性的 JSON 解析错误异常

0.3.1

  • 修复 PR #286 修复了头部的区分大小写问题

0.3.0

  • 重构 停止支持已废弃的 PHP 版本。更新了 PHPUnit 测试。

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 在 Request 中改进代理清理
  • 重构 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 添加了更具体的异常
  • FIX PR #58 修复了在接收到空XML响应时抛出错误的问题
  • 新特性 PR #57 添加了对摘要认证的支持

0.1.6

  • 通过重载 followRedirects(int max_redirects) 方法,可以设置最大重定向次数
  • Accepts 头的符合标准的修复
  • 修复了通过Composer安装时启动过程的bug

0.1.5

  • 使用 DIRECTORY_SEPARATOR 常量 PR #33
  • PR #35
  • 将原始头部属性引用添加到响应中。
  • 组合请求头部,并将原始头部添加到请求对象中。
  • 修复了响应中存在的错误,并添加了更多注释以提高清晰度。
  • 修复了头部解析,以允许最小(仅状态行)的头部,同时也考虑了按照RFC2616实际以CRLF结尾的头部。
  • 添加了适用于所有可接受场景的完美测试 Accept: 头部,详见 PR #33
  • 添加了默认的 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测试中的bug

0.1.0

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