Laravel 内部调用 API
在Laravel项目中,有时候在某个API请求周期中需要去内部调用项目的其他API,而Laravel似乎并没有提供类似DingoAPI内部调用
的功能。我这里通过二次调用Laravel的请求周期来实现:
- 模拟在控制器方法中请求passport发放令牌接口并返回
namespace App\Http\Controllers;
use App\Http\Kernel;
use Illuminate\Http\Request;
public function login(Request $request)
{
// 通过\Illuminate\Http\Request的create方法创建一个请求对象
$request = Request::create(route('passport.token'), 'POST', [
'username' => $request->get('email'),
'password' => $request->get('password'),
'grant_type' => 'password',
'client_id' => 'client-id',
'client_secret' => 'client-secret',
'scope' => '*'
]);
// 将请求二次传递给Laravel请求周期,返回响应
return app(Kernel::class)->handle($request);
}
其实这种方式就是又完整的走了一次Laravel的请求周期,不会二次经过nginx代理服务,不知道这种方式有没有什么缺点或者有更好的方式,欢迎指正
本作品采用《CC 协议》,转载必须注明作者和本文链接
我之前是用 GuzzleHttp 去请求,Laravel 本身有引入这个库