ローカル開発環境のLaravel(sail)から、ステージングのLaravel経由でAPIを叩く。
決済APIが特定のIP(ステージング環境)からしか受け付けない状況で、スムーズに開発をしたいため簡易プロキシを作ってみました。
リクエストの流れ
- 送って (ローカル開発環境) → (プロキシ:ステージング環境) → (APIサーバー)
- 帰ってくる (ローカル開発環境) ← (プロキシ:ステージング環境) ← (APIサーバー)
利用パッケージ(guzzle)
$ composer require guzzlehttp/guzzle
API用のルーティング
APIのディレクトリをプロキシようのコントローラーに送る。
Route::match(['POST','GET'],'/api/{any}',[\App\Http\Controllers\Dev\ProxyController::class,'index']);
プロキシ部分
- ProxyController.php
<?php
namespace App\Http\Controllers\Dev;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7;
use App\Http\Controllers\Controller;
class ProxyController extends Controller
{
public function index()
{
$request = Psr7\ServerRequest::fromGlobals();
$proxyUri = $request->getUri()
->withHost('api.example.com')
->withPort(433)
->withScheme('https');
$client = new Client;
dd($proxyUri,$client);
$response = $client->send($request->withUri($proxyUri), ['http_errors' => false]);
echo $response->getBody();
}
}