calderawp / http
基于composer的新PHP项目的模板。
0.2.0
2019-01-09 22:31 UTC
Requires
- php: ^7.2
- inpsyde/wpsr7: ^1.0
Requires (Dev)
- php: ^7.2
- guzzlehttp/guzzle: ^6.3
- inpsyde/wpsr7: ^1.0
- mockery/mockery: ^1.2
- phpunit/phpunit: ^7.3
- squizlabs/php_codesniffer: 3.*
This package is auto-updated.
Last update: 2024-09-23 07:33:02 UTC
README
提供描述HTTP请求和响应的对象,以及发送HTTP请求的能力。请求和响应类通过rest-api包进行扩展,该包使用它们来表示传入的REST API请求和响应。
👀🌋 这是 Caldera框架 的一个模块
-
🌋 在这里找到Caldera表单
-
🌋 应将问题和 pull请求 提交到 主Caldera仓库。
概览
请求和响应有以下公共API
请求仅
getParam($name)
- 获取请求体(或查询参数)字段的值。getParams()
- 获取所有请求体(或查询参数)字段的值。setParam($name,$value)
- 设置请求或响应体(或查询参数)字段的值。
响应仅
getData()
- 获取所有请求体(或查询参数)字段的值。getStatus()
- 设置请求HTTP方法。getStatus($code)
- 设置HTTP状态方法。
请求和响应
getHeader($name)
- 获取请求或响应头的值。getHeaders()
- 获取所有请求或响应头的值。setHeader($name,$value)
- 设置请求或响应头的名称。getHttpMethod
- 获取请求HTTP方法。setHttpMethod
- 设置请求HTTP方法。
用法
主模块类方法
send()
- 向指定的URL发送HTTP请求。- 提供
Request
对象和URL。响应将以Response
对象的形式返回。 - 默认使用Guzzle。
- 提供
setClient()
重置HTTP客户端。- 这对于测试很有用。在 phpunit备忘单 中有一个示例
- 可用于添加不同的HTTP传输或模拟HTTP的东西。
还有其他公共方法。它们实际上应该移到另一个类中,就像这个类一样。请不要使用它们。
安装
- 添加到您的包中
composer require calderawp/http
- 开发安装
git clone git@github.com:CalderaWP/http.git && composer install
使用
- 从主容器访问
$http = \caldera()->getHttp();
- 重置客户端
use GuzzleHttp\Handler\MockHandler; use GuzzleHttp\HandlerStack; use GuzzleHttp\Psr7\Response; //... $mockResponse = new Response(200, ['X-HELLO' => 'ROY'], json_encode(['messageFromServer' => 'Everything Is An Illusion.'])); $mock = new MockHandler([ $mockResponse, ]); $handler = HandlerStack::create($mock); $client = new Client(['handler' => $handler]); \caldera()->getHttp()->setClient($client);
发送远程HTTP请求
所有HTTP请求都由Request
类的对象表示,然后传递给CalderaHttp::send()
- 首先创建请求对象
$apiRequest = new \calderawp\caldera\Http\Request(); $apiRequest->setHttpMethod('POST'); //how to dispatch $apiRequest->setParams([ 'stateOfMind' => 'Super Chill' ); //Request body $apiRequest->setHeaders([ 'X-CONTENT-TYPE' => 'application/json' ] ); //Request headers
- 分发请求对象然后你可以分发你的请求。如果请求无效,可能会抛出异常——由CalderaHttp或Guzzle。建议使用通用的catch
try { $response = \caldera() ->getHttp() ->send($apiRequest, $url); } catch (\Exception $e) { throw $e; }
- 使用响应
$status = $response->getHeaders(); //All headers returned by remote API $status = $response->getStatus(); //status code returned $body = $response->getData();// body of remote request response
测试
- 运行所有测试(JK,只是单元测试,因为这是模式)
composer test
- 运行单元测试
composer test:unit
- 运行验收测试
composer test:acceptance
许可,版权等。
版权所有 2018+ CalderaWP LLC,并许可在GNU GPL许可证的条款下。请与您的邻居分享。