| 语言 | 格式 | 评分 |
|---|---|---|
英语 | .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 页请下载阅读 -
文档评分














Guzzle PHP 7.0 Documentation
Guzzle PHP 6.5 Documentation