在laravel控制器/视图中测试API调用

时间:2018-12-18 15:48:20

标签: php laravel api

我正在测试一个我在Postman和基于该API构建的其他接口中工作的API调用,但是我试图在laravel网站中实际获取返回值。

应该很简单,我制作了一个非常裸露的服务文件,该文件使用guzzle来访问API网址,并且在其中有一个功能,可以使用测试电子邮件,密码和客户端ID登录(所有这些都可以在api接口(如Postman)

我在authController中调用类和函数,然后在视图中返回函数调用,然后将其转储到视图中。

但是,当前我的页面转储中显示为空。

我的服务文件中可能缺少某些内容吗?我不认为这里应该传递任何内容,但也许我忽略了更明显的内容。

Authorize.php

<?php
namespace App\Services\restAPI;

use Illuminate\Support\Facades\Auth;
use GuzzleHttp\Exception\ClientException;
use GuzzleHttp\Exception\ServerException;


use Session;
use Exception;

class AuthService
{

    protected $baseurl;
    protected $guzzleClient;

    public function  __construct() {
        $this->baseurl = config('http://ip.address');
        $this->baseurl = rtrim($this->baseurl, '/') . '/';  // ensure trailing slash

        $this->guzzleClient = new \GuzzleHttp\Client(
            ['verify'   => config('app.ca_pem_file'),
             'headers'  => [
                    'Event-ID' => ACCESS_EVENT_ID
                ],
             'base_uri' => $this->baseurl
            ]
        );
    }

    public function loginGetToken(){
        $password = "password";
        $email = "test@thisAPI.com";
        $client_id = "0";

        $payload = (object)[
            'password'=>(string)$password,
            'email'=>(string)$email
        ];

        $retval = $this->post('login/?client_id='.$client_id,$payload);

        return $retval;
    }

    private function post($endpoint,$payload){

        $result = $this->guzzleClient->request('POST', $endpoint, ['json'=>$payload]);
        $body = $result->getBody();
        return  json_decode($body);
    }
}

AuthController.php

use Redirect;
use Illuminate\Http\Request;
use App\Services\restAPI\AuthService;

class AuthController extends Controller
{
    public function login(Request $request)
    {
        $authService = new AuthService();
        $login = $authService->loginGetToken();

         return redirect(route('auth.login'))
            ->with('login', $login)
    }

login.blade.php

<?php

    dd($login);

?>

1 个答案:

答案 0 :(得分:1)

由于要重定向,因此数据在视图中不能直接作为变量使用。不过它应该在会话中,因此您可以在自己的视图中尝试:

dd(session('login'));

https://laravel.com/docs/5.7/redirects#redirecting-with-flashed-session-data