需求:为了用mock自动生成的api做测试,且避免跨域问题,所以采取的策略是laravel将请求的api url做一次转发,转发至mock服务器。
一、插件
GuzzleHttp
安装方法
composer require guzzlehttp/guzzle:~6.0
二、使用方法
use GuzzleHttp\Client; class yourController extends Controller { public function saveApiData() { $client = new Client(); $res = $client->request('POST', 'https://url_to_the_api', [ 'form_params' => [ 'client_id' => 'test_id', 'secret' => 'test_secret', ] ]); echo $res->getStatusCode(); // "200" echo $res->getHeader('content-type'); // 'application/json; charset=utf8' echo $res->getBody(); // {"type":"User"...' }
三、实例测试
Route::get('{path}',function ($path,Request $request) { $client = new GuzzleHttp\Client(); $url = "http://apitest.work.tianheng-uestc.com/mock/59acc125236ef903579a282c/".$path; $res = $client->request('GET',$url); // echo $res->getStatusCode(); // "200" // 'application/json; charset=utf8' // echo $url; // echo $res->getBody(); return response()->json(json_decode($res->getBody())); return ; })->where('path', '.+');
-