900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > laravel 安装guzzlehttp/guzzle

laravel 安装guzzlehttp/guzzle

时间:2020-10-13 00:37:07

相关推荐

laravel 安装guzzlehttp/guzzle

composer require guzzlehttp/guzzle

Guzzle是一个PHP HTTP客户端,可以轻松发送HTTP请求,并且可以轻松集成Web服务。

用于构建查询字符串,POST请求,流式传输大型上传,流式传输大型下载,使用HTTP cookie,上传JSON数据等的简单界面...可以使用相同的接口发送同步和异步请求。为请求,响应和流使用PSR-7接口。这使您可以与Guzzle一起使用其他PSR-7兼容库。抽象出底层的HTTP传输,允许您编写环境和传输不可知的代码;即不依赖于cURL,PHP流,套接字或非阻塞事件循环。中间件系统允许您增强和编写客户端行为。

Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。

接口简单:构建查询语句、POST请求、分流上传下载大文件、使用HTTP cookies、上传JSON数据等等。发送同步或异步的请求均使用相同的接口。使用PSR-7接口来请求、响应、分流,允许你使用其他兼容的PSR-7类库与Guzzle共同开发。抽象了底层的HTTP传输,允许你改变环境以及其他的代码,如:对cURL与PHP的流或socket并非重度依赖,非阻塞事件循环。中间件系统允许你创建构成客户端行为。

$client = new GuzzleHttp\Client();$res = $client->request('GET', '/user', ['auth' => ['user', 'pass']]);echo $res->getStatusCode();// "200"echo $res->getHeader('content-type');// 'application/json; charset=utf8'echo $res->getBody();// {"type":"User"...'// 发送一个异步请求$request = new \GuzzleHttp\Psr7\Request('GET', '');$promise = $client->sendAsync($request)->then(function ($response) {echo 'I completed! ' . $response->getBody();});$promise->wait();

安装Guzzle

使用composer安装

php composer.phar require guzzlehttp/guzzle:~6.0

或者编辑项目的composer.json文件,添加Guzzle作为依赖

{"require": {"guzzlehttp/guzzle": "~6.0"}}

执行composer update

Guzzle基本使用

发送请求

use GuzzleHttp\Client;$client = new Client([// Base URI is used with relative requests'base_uri' => '',// You can set any number of default request options.'timeout' => 2.0,]);$response = $client->get('/get');$response = $client->delete('/delete');$response = $client->head('/get');$response = $client->options('/get');$response = $client->patch('/patch');$response = $client->post('/post');$response = $client->put('/put');

设置查询字符串

$response = $client->request('GET', '?foo=bar');

或使用query请求参数来声明查询字符串参数:

$client->request('GET', '', ['query' => ['foo' => 'bar']]);

设置POST表单

传入form_params数组参数

$response = $client->request('POST', '/post', ['form_params' => ['field_name' => 'abc','other_field' => '123','nested_field' => ['nested' => 'hello']]]);

使用响应

# 状态码$code = $response->getStatusCode(); // 200$reason = $response->getReasonPhrase(); // OK# header// Check if a header exists.if ($response->hasHeader('Content-Length')) {echo "It exists";}// Get a header from the response.echo $response->getHeader('Content-Length');// Get all of the response headers.foreach ($response->getHeaders() as $name => $values) {echo $name . ': ' . implode(', ', $values) . "\r\n";}# 响应体$body = $response->getBody();// Implicitly cast the body to a string and echo itecho $body;// Explicitly cast the body to a string$stringBody = (string) $body;// Read 10 bytes from the body$tenBytes = $body->read(10);// Read the remaining contents of the body as a string$remainingBytes = $body->getContents();

安装PHPUnit

同Guzzle的安装, 也适用Composer工具。

composer global require "phpunit/phpunit=5.5.*"

或者在composer.json文件中声明对phpunit/phpunit的依赖

{"require-dev": {"phpunit/phpunit": "5.5.*"}}

执行安装

API 单元测试

我们在tests\unit\MyApiTest.php中定义了两个测试用例

<?phpclass MyApiTest extends \PHPUnit_Framework_TestCase{protected $client;public function setUp(){$this->client = new \GuzzleHttp\Client( ['base_uri' => '','http_errors' => false, #设置成 false 来禁用HTTP协议抛出的异常(如 4xx 和 5xx 响应),默认情况下HTPP协议出错时会抛出异常。]);}public function testAction1(){$response = $this->client->get('/api/v1/action1');$body = $response->getBody();//添加测试$this->assertEquals(200, $response->getStatusCode());$data = json_decode($body, true);$this->assertArrayHasKey('errorno', $data);$this->assertArrayHasKey('errormsg', $data);$this->assertArrayHasKey('data', $data);$this->assertEquals(0, $data['errorno']);$this->assertInternalType('array', $data['data']);}public function testAction2(){$response = $this->client->post('/api/v1/action2', ['form_params' => ['name' => 'myname','age' => 20,],]);$body = $response->getBody();//添加测试$this->assertEquals(200, $response->getStatusCode());$data = json_decode($body, true);$this->assertArrayHasKey('errorno', $data);$this->assertArrayHasKey('errormsg', $data);$this->assertArrayHasKey('data', $data);$this->assertEquals(0, $data['errorno']);$this->assertInternalType('array', $data['data']);}}

运行测试

在项目根目录执行命令

php vendor/bin/phpunit tests/unit/MyApiTest.php

总结

通过Guzzle强大的功能,可以方便进行API单元测试。大家可以查看Guzzle文档,详细了解Guzzle的使用。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。