在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 協議》,轉載必須註明作者和本文連結