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