themy3 / httpful
一个可读性高、链式调用、REST 友好的 PHP HTTP 客户端
0.4.0
2022-11-14 06:58 UTC
Requires
- php: >=7.2
- ext-curl: *
Requires (Dev)
README
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.ini
中 phar.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
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
0.2.4
0.2.3
- 修复 覆盖默认的 MIME 处理器
- 修复 PR #73 解析 HTTP 状态代码
0.2.2
- 特性 支持将 JSON 响应解析为关联数组而不是对象
- 特性 更好地支持在 MIME 处理器上设置构造函数参数
0.2.1
- 特性 PR #72 允许支持自定义 Accept 头部
0.2.0
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类型的能力