tekintian / tekinhttp
Requires
- ext-curl: *
Requires (Dev)
- phpunit/phpunit: ^5.7
- wiremock-php/wiremock-php: 1.43.2
This package is not auto-updated.
Last update: 2024-09-22 15:49:13 UTC
README
TekinHttp 是一个通用的 HTTP 客户端。
在其最简单的形式中,一个 HttpClient
暴露了一个 execute
方法,该方法接受一个 HTTP 请求,在 Environment 中执行该请求,并返回一个 HTTP 响应。
如何使用
安装库
composer require tekintian/tekinhttp
// 加载自动载入
require_once __DIR__ . '/vendor/autoload.php';
$env = new TekinHttp\MyEnvironment('http://rap2api.taobao.org/app/mock/300755');
$client = new TekinHttp\HttpClient($env);
$req = new TekinHttp\HttpRequest("/auth", "POST");
try {
$response = $client->execute($req);
dd($response->result);
} catch (TekinHttp\HttpException $e) {
$statusCode = $e->response->statusCode;
$headers = $e->response->headers;
$body = $e->response->result;
}
示例代码 dev.php
使用vscode打开,调试里面点击 Launch built-in server and debug
打开以下网址即可查看效果 https://:8080/dev.php
环境
Environment
描述了一个托管 REST API 的域名,HttpClient
将对此域名进行请求。 Environment
是一个简单的接口,它包装了一个方法,即 baseUrl
。
$myenv = new MyEnvironment('https://example.com');
请求
HTTP 请求包含了对 REST API 进行 HTTP 请求所需的所有信息。具体来说,一个请求描述了路径、动词、任何路径/查询/表单参数、头信息、上传的附件文件和正文数据。
响应
HTTP 响应包含服务器根据上述请求返回的信息。它们是简单的对象,包含状态码、头信息和服务器返回的任何数据。
$request = new HttpRequest("/path", "GET");
$request->body[] = "some data";
$response = $client->execute($req);
$statusCode = $response->statusCode;
$headers = $response->headers;
$data = $response->result;
注入器
注入器是可以用于执行任意预检逻辑的块,例如修改请求或记录数据。注入器通过 addInjector
方法附加到 HttpClient
。
HttpClient
在每个请求之前按先入先出顺序执行其注入器。
class LogInjector implements Injector
{
public function inject($httpRequest)
{
// Do some logging here
}
}
$logInjector = new LogInjector();
$client = new HttpClient($myenv);
$client->addInjector($logInjector);
...
错误处理
HttpClient#execute
如果在执行过程中出现问题,可能会抛出 Exception
。如果服务器返回非 200 响应,将抛出 IOException,其中将包含您可用于调试的状态码和头信息。
try
{
$client->execute($req);
}
catch (HttpException $e)
{
$statusCode = $e->response->statusCode;
$headers = $e->response->headers;
$body = $e->response->result;
}
此基础代码来自 PayPal PHP HttpClient