搜索

epub文档 Guzzle PHP 7.0 Documentation

310.93 KB 64 页 0 下载 93 浏览 0 评论 0 收藏
所属分类: 后端开发 / PHP
语言 格式 评分
英语
.epub
3
摘要
Guzzle 是一个用于发送 HTTP 请求的 PHP 客户端,支持同步和异步请求,兼容 PSR-7 接口,抽象底层传输,提供中间件系统。文档介绍了其安装、配置、使用方法,包括处理 JSON 数据、流式上传下载、管理 cookies,以及处理响应和流。Guzzle 还支持多种请求方式和处理大文件上传下载。
AI总结
### Guzzle PHP 7.0 文档总结 #### 1. **概述** Guzzle 是一个功能强大的 PHP HTTP 客户端,支持以下核心功能: - **简单易用的接口**:轻松构建查询字符串、发送 POST 请求、处理大文件上传/下载、使用 HTTP Cookie、上传 JSON 数据等。 - **同步与异步请求**:使用相同接口发送同步和异步请求。 - **PSR-7 兼容性**:使用 PSR-7 接口(如 Request、Response 和 Stream),可与兼容的其他库集成。 - **抽象传输层**:不依赖特定的 HTTP 传输(如 cURL、PHP 流、套接字等),支持环境无关的代码。 - **中间件系统**:通过中间件扩展和定制客户端行为。 #### 2. **安装** - 使用 Composer 安装: ```bash composer require guzzlehttp/guzzle:^7.0 ``` - 或在 `composer.json` 中添加依赖: ```json "require": { "guzzlehttp/guzzle": "^7.0" } ``` - 安装后,需引入 Composer 自动加载文件: ```php require 'vendor/autoload.php'; ``` #### 3. **配置** - **PHP 版本要求**:PHP 7.2 或更高。 - **依赖项**: - 使用 PHP 流处理时需启用 `allow_url_fopen`。 - 使用 cURL 需安装 cURL 7.19.4 或更高版本,支持 OpenSSL 和 zlib。 - **可选传输**:Guzzle 不强制依赖 cURL,可使用 PHP 流或其他自定义传输。 #### 4. **请求与响应** - **发送请求**: ```php $client = new \GuzzleHttp\Client(); $response = $client->request('GET', 'https://api.github.com/user', ['auth' => ['user', 'pass']]); echo $response->getStatusCode(); // 200 echo $response->getHeader('content-type')[0]; // application/json; charset=utf8 echo $response->getBody(); // { "type": "User..." } ``` - **异步请求**: ```php $request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org'); $promise = $client->sendAsync($request)->then(function ($response) { echo 'I completed!' . $response->getBody(); }); $promise->wait(); ``` #### 5. **处理流数据** - **流处理**:Guzzle 使用 PSR-7 流对象处理请求和响应正文,支持大文件的流式处理。 - **流装饰器**:提供多种流装饰器(如 `BufferStream`、`LimitStream`),扩展流功能。 #### 6. **请求选项** - **查询字符串**:通过 `getQuery()` 方法获取或设置请求的查询字符串。 - **表单请求**: - 发送表单数据: ```php $response = $client->request('POST', 'http://httpbin.org/post', ['form_params' => ['field_name' => 'abc']]); ``` - 上传文件: ```php $response = $client->request('POST', 'http://httpbin.org/post', [ 'multipart' => [ ['name' => 'field_name', 'contents' => 'abc'], ['name' => 'file_name', 'contents' => fopen('/path/to/file', 'r')] ] ]); ``` #### 7. **JSON 数据处理** - 使用 `json` 选项上传 JSON 数据: ```php $response = $client->request('PUT', 'http://httpbin.org/put', ['json' => ['foo' => 'bar']]); ``` #### 8. **响应处理** - **响应状态码**: ```php echo $response->getStatusCode(); // 200 echo $response->getReasonPhrase(); // OK echo $response->getProtocolVersion(); // 1.1 ``` - **响应正文**: ```php $body = $response->getBody(); echo (string)$body; // 输出正文内容 $body->seek(0); // 重置指针 ``` #### 9. **中间件与扩展** - **中间件系统**:允许扩展和定制客户端行为。 - **HandlerStack**:通过组合多个中间件构建复杂的处理逻辑。 #### 10. **测试** - 使用 PHPUnit 运行测试: ```bash make test ``` - 集成测试需安装 Node.js v8 或更高版本。 #### 11. **贡献指南** - **代码规范**:遵循 PSR-1、PSR-2、PSR-4 和 PSR-7。 - **依赖管理**:Guzzle 保持轻量,依赖较少。 - **提交代码**:所有提交需包含单元测试,并确保代码兼容 PHP 7.2。 #### 12. **许可证** Guzzle 使用 MIT 许可证,允许自由使用、修改和分发,但需保留版权声明。 #### 13. **安全** - 如发现安全漏洞,请通过 `security@guzzlephp.org` 邮件地址报告。
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余 52 页请下载阅读 -
文档评分
请文明评论,理性发言.