nategood / httpful
一个可读性高、可链式调用、REST友好的PHP HTTP客户端
1.0.0
2024-05-01 11:33 UTC
Requires
- php: >=8.1
- ext-curl: *
Requires (Dev)
- phpunit/phpunit: ^10.5
README
Httpful是一个适用于PHP 8.0+的简单Http客户端库。它强调可读性、简单性和灵活性——基本上提供完成任务所需的功能和灵活性,并使这些功能易于使用。
特性
- 支持可读的HTTP方法(GET、PUT、POST、DELETE、HEAD、PATCH和OPTIONS)
- 自定义头部
- 自动“智能”解析
- 自动负载序列化
- 基本认证
- 客户端证书认证
- 请求“模板”
预览
这里有一些可以刺激你胃口的东西。搜索包含"#PHP"的twitter 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安装。只需将nategood/httpful
添加到你的composer.json文件中。Composer是PEAR的合理替代品。它非常适合管理大型项目中的依赖项。
{
"require": {
"nategood/httpful": "*"
}
}
从源安装
因为Httpful遵守PSR-0规范,你也可以克隆Httpful仓库并使用兼容PSR-0的自动加载器来加载库,例如Symfony的。或者你也可以使用Httpful中包含的兼容PSR-0的自动加载器(只需require("bootstrap.php")
)。
构建Phar
如果你想要构建自己的Phar存档,可以使用包含的build
脚本。确保你的php.ini
中phar.readonly
设置的值为Off或0。此外,你需要在项目根目录中创建一个空的downloads
目录。
贡献
Httpful强烈鼓励提交pull请求。在提交pull请求时,请
- 所有pull请求都应该针对
dev
分支(而不是master
) - 确保你的代码遵循编码规范
- 请使用软制表符(四个空格)而不是硬制表符
- 确保为你的更改添加适当的测试覆盖率
- 通过
phpunit ./tests
在测试目录中运行所有单元测试 - 在适当的位置包含注释,并添加描述性的pull请求信息
变更日志
1.0.0
- 安全 将证书验证设置为默认。这是一个可能破坏性的更改,因此按照semver的规则,增加主版本号。验证仍然可以跳过,但必须通过
withoutStrictSSL
显式跳过。 - 重构 PR #305 移除PHP 8.1之前的弃用功能
- 重构 部分来自 PR #282 为现在Travis已不存在添加CI支持
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 处理了严格 Ssl 模式下的 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 安装时的引导过程漏洞
0.1.5
- 使用
DIRECTORY_SEPARATOR
常量 PR #33 - PR #35
- 添加了响应的 raw_headers 属性引用。
- 组合请求头,并将 raw_header 添加到请求对象中。
- 修复了响应中的错误,并添加了更多注释以提高清晰度。
- 修复了头部分析,允许最小(仅状态行)的解析,并按照 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 类型的能力