今天给大家分享,如何在Laravel中调用多个API
我们现在承诺可以从客户端调用多个 api(vue、react、JS…)。如果你使用promise.all([…]),它会返回多个promise
好吧,我们走
首先,可以安装laravel 11项目
第二个,我们可以在Web.php或者controller,services,..
中设置
示例:我在web.php文件中编写代码,帮忙测试一下
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
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) {
return $response;
}),
'bar' => http::async()->get('https://jsonplaceholder.typicode.com/todos/2')->then(function ($response) {
return $response;
}),
'baz' => http::async()->get('https://jsonplaceholder.typicode.com/todos/3')->then(function ($response) {
return $response;
}),
])->wait();
$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
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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();
$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 请求