dduers / php-rest-proxy
REST API 代理
v1.0.4
2021-12-13 08:36 UTC
Requires
- guzzlehttp/guzzle: ^7.4
README
它能做什么?
- 将 API 请求重定向到目标 API
- 输出响应体和响应头
- 可以使用名称挂载多个 API 端点
安装
composer require dduers/php-rest-proxy
使用方法
<?php $_proxy = new \Dduers\PhpRestProxy\RestProxy(); $_proxy->mount('myapi', 'https://:8080/v1'); $_proxy->exec(); // set response headers foreach ($_proxy->getHeaders() as $name_ => $value_) header($name_.': '.$value_[0]); // output response body echo $_proxy->getBody();
或者更简单的方法
<?php $_proxy = new \Dduers\PhpRestProxy\RestProxy(); $_proxy->mount('myapi', 'https://:8080/v1'); $_proxy->exec(); // output response body with response headers echo $_proxy->dump();
或者,从 v1.0.2 版本开始,可以向构造函数传递客户端选项
require_once $_SERVER['DOCUMENT_ROOT'].'/../vendor/autoload.php'; $_proxy = new \Dduers\PhpRestProxy\RestProxy([ // for dev, don't verify ssl certs 'verify' => false, // use HTTP/2 'version' => 2 ]); $_proxy->mount('srocki', 'https://domain19.local/v1'); $_proxy->exec(); $_proxy->dump();
跨站 Cookies
- 目标 API 可以为运行 Rest Proxy 的域名颁发 Cookies
- 这些 Cookies 的 Same Site 属性必须设置为
Strict
<?php setcookie('TestCookie', 'The Cookie Value', [ 'expires' => time() + 60*60*24*30, // set path to avoid multiple cookies generated for each api route 'path' => '/', // domain, here the rest proxy is running 'domain' => '.domain17.local', 'secure' => false, 'httponly' => true, 'samesite' => 'Strict' ]);