基于composer的新PHP项目的模板。

0.2.0 2019-01-09 22:31 UTC

This package is auto-updated.

Last update: 2024-09-23 07:33:02 UTC


README

提供描述HTTP请求和响应的对象,以及发送HTTP请求的能力。请求和响应类通过rest-api包进行扩展,该包使用它们来表示传入的REST API请求和响应。

👀🌋 这是 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许可证的条款下。请与您的邻居分享。