برنامه نویسی

چند API در لاراول با درخواست های HTTP – انجمن DEV

Summarize this content to 400 words in Persian Lang
امروز، نحوه فراخوانی چند api در لاراول را با همه به اشتراک می گذارماکنون قول می دهیم که می توانیم چندین api را از کلاینت فراخوانی کنیم (vue، react، js،…). اگر از Promise.all استفاده می کنید([…]، وعده های متعدد را برمی گرداند

باشه بریم

اول، می توانید پروژه 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);

});

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برگشت داده ها:

مقاله: چندین API در لاراول با درخواست های HTTP

امروز، نحوه فراخوانی چند api در لاراول را با همه به اشتراک می گذارم
اکنون قول می دهیم که می توانیم چندین api را از کلاینت فراخوانی کنیم (vue، react، js،…). اگر از Promise.all استفاده می کنید([…]، وعده های متعدد را برمی گرداند

باشه بریم

اول، می توانید پروژه 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، داده‌ها را برمی‌گرداند

چند API در لاراول با درخواست HTTP

بسیار خوب، یا می توانید از 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);

});

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برگشت داده ها:

چند API در لاراول با درخواست HTTP

مقاله: چندین API در لاراول با درخواست های HTTP

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا