今天给大家分享,如何在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 请求