今天給大家分享,如何在Laravel中呼叫多個api
我們現在承諾可以從客戶端呼叫多個 api(vue、react、js...)。如果你使用Promise.all([...]),它會回傳多個promise
好吧,我們走吧
首先,可以安裝專案Laravel 11
第二個,我們可以在web.php或控制器、服務中設定它,..
範例:我在web.php檔案中寫程式碼,幫忙測試一下
use Illuminate\Support\Facades\Http; use GuzzleHttp\Promise\Utils; use GuzzleHttp\Exception\ConnectException; use Illuminate\Http\Client\Pool; Route::get('multiple-request', function() { $responses = Utils::all([ 'foo' => Http::async()->get('https://jsonplaceholder.typicode.com/todos/1')->then(function ($response) { // you can check data, after then return it return $response; }), 'bar' => Http::async()->get('https://jsonplaceholder.typicode.com/todos/2')->then(function ($response) { // you can check data, after then return it return $response; }), 'baz' => Http::async()->get('https://jsonplaceholder.typicode.com/todos/3')->then(function ($response) { // you can check data, after then return it return $response; }), ])->wait(); // you need check data here $fooOk = $responses['foo']->ok(); $barSuccessful = $responses['bar']->successful(); $connectionFailed = $responses['baz'] instanceof ConnectException; return [ 'foo' => $responses['foo']->ok() ? $responses['foo']->json() : 'Request to foo failed', 'bar' => $responses['bar']->successful() ? $responses['bar']->json() : 'Request to bar failed', 'baz' => $responses['baz']->ok() ? $responses['baz']->json() : 'Request to baz failed', ]; });
當您要求 url : http://127.0.0.1/multiple-request 時,它會傳回資料
好的,或者你可以使用 Http::pool ,請求 api
Route::get('multiple-request-using-pool', function() { $responses = Http::pool(fn (Pool $pool) => [ $pool->get('https://jsonplaceholder.typicode.com/todos/1'), $pool->get('https://jsonplaceholder.typicode.com/todos/2'), $pool->get('https://jsonplaceholder.typicode.com/todos/3'), ]); $responses[0]->ok(); $responses[1]->successful(); // Kiểm tra và lấy nội dung từ các phản hồi $data = [ 'todo_1' => $responses[0]->ok() ? $responses[0]->json() : 'Request to todo 1 failed', 'todo_2' => $responses[1]->successful() ? $responses[1]->json() : 'Request to todo 2 failed', 'todo_3' => $responses[2]->ok() ? $responses[2]->json() : 'Request to todo 3 failed', ]; return response()->json($data); });
傳回資料:
文章:Laravel 中的多個 API 與 HTTP 請求
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3