首页 > 解决方案 > 将返回数据传递给同一控制器 laravel 中的另一个函数

问题描述

尝试连接到外部 API。在第一个函数中,我已经收到了带有身份验证的令牌。要发送 POST 请求,我需要将从第一个函数收到的 xtoken 作为第二个函数。我不知道如何将值发送到第二个函数(registerUser)

Route::get('/connect', 'Guzzlecontroller@registerUser')->name('registeruser');

这是我的路线文件

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;
use App\Http\Controllers\Auth\RegisterController;

class GuzzleController extends Controller
{
    public function Gettoken()
    {
        $client = new \GuzzleHttp\Client();
        $request = $client->get(
            'http://api01.oriental-game.com:8085/token',
            [
                'headers' => [
                    'X-Operator' => 'mog189b',
                    'X-key' => 'sQxAVNaEMe0TCHhU',

                ]
            ]

        );
        $response = $request->getBody();
        $tokenReturn = json_decode($response, true);
        $xtoken = array("x-token:" . $tokenReturn['data']['token'],);

        $this->registerUser($xtoken);
    }

    public function registerUser($xtoken)
    {

        $client = new \GuzzleHttp\Client();
        $url = "http://api01.oriental-game.com:8085/register";

        $request = $client->post($url,  [
            'headers' => $xtoken,
            'body' => [
                'username' => 'test1',
                'country' => 'Korea',
                'fullname' => 'test user1',
                'language' => 'kr',
                'email' => 'testuser1@test.com',

            ]
        ]);
        $response = $request->send();

        dd($response);
    }
}

函数 App\Http\Controllers\GuzzleController::registerUser() 的参数太少,通过了 0,预期正好 1

这是我得到的错误。请帮助我如何将 $xtoken 值发送到 registerUser 函数

标签: laravelguzzle

解决方案


问题是 Laravel 直接调用 registerUser 而不是通过 getToken。所以令牌永远不会被检索并传递给注册操作。

而不是registerUser()Gettoken(). 已Gettoken()返回令牌并从中调用它registerUser()

public function Gettoken()
{
    ...

    return $xtoken;
}

public function registerUser()
{
    $xtoken = $this->Gettoken();

    ...
}

推荐阅读