Laravel - 从控制器中的 API 获取返回数据

Laravel - Get returned data from an API within the Controller

我有一个 API /getuser 其中 returns 一个响应以及用户对象:

$user = session()->get('current_user');
return response()->json(['user'=>$user]);

现在,我想在我的函数 public function show_user().

中得到上述返回的 api

我试过 $current_user = return redirect('/getuser'); 但它给了我一个错误 - 我不知道为什么具体但我很确定你不能在变量上分配返回的响应?

我使用不同的 API 获取用户的原因是会话。 api routes 无法正常 read/store 会话(可能是因为它们是无状态的或其他原因)所以我将 /getuser 放在 web routes 上,效果很好。我可以在任何地方调用网络 "api",它会给我当前用户。但是现在,我无法通过 session()->get()...api routes 中引用上述当前用户,因为它不会读取会话。我的解决方案是调用 /getuser api 我在 web routes 上创建的并将其返回的响应分配给一个变量 - 我不知道如何。

有什么方法可以实现这样的目标吗? 非常感谢!

当您需要在您的控制器中调用 api 时,您可以在 laravel 中使用 guzzle。

use GuzzleHttp\Client;
class MyController extends Controller {

    public function show_user()
    {
        $client = new Client();
        $res = $client->request('GET', '/getuser', [
            'form_params' => [
                'KEY' => 'VALUE',
            ]
        ]);

        $result= $res->getBody();
        dd($result);

}

阅读博客here