Laravel 內部呼叫 API

oneSmile發表於2020-03-29

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

相關文章