dduers/php-rest-proxy

REST API 代理

v1.0.4 2021-12-13 08:36 UTC

This package is auto-updated.

Last update: 2024-09-04 06:02:54 UTC


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' 
]);