GET Route Laravel

时间:2019-11-16 12:39:10

标签: php laravel api routes

我在api.php中有一条路线,看起来像这样

Route::get('auth/logout/{token}', 'UserController@logout');

然后,我使用邮递员检查该API端点,如下所示:

localhost:8000/api/v1/auth/logout?token=$2y$10$InjSk8VExH76wSyA3OE9a.jhR/3GhAkJdBE3EyQ3O.Z0kCe/r7wp y

但是我在邮递员那里得到一个空白的答复。它应该显示消息响应并删除数据库中的数据。但事实并非如此。这是我在logout()中的UserController.php

public function logout($token){
    $current_token = Token::where('token', $token)->first();
    if($current_token){
        if(Token::where('token','=',$current_token)->delete()){
            return response()->json([
                'message' => 'Logout Success'
            ], 201);
        }
    }else{
        return response()->json([
            'message' => 'Unauthorized User'
        ], 401);
    }
}

任何人都可以帮助解决我的问题吗?感谢您采用的所有方法。

编辑...

当我这样发送虚拟请求并使用dd($token)时,邮递员给了我"asdfasdf"

localhost:8000/api/v1/auth/logout/asdfasdf

因此,如何使用token在URL中发送"?"参数

编辑2 ...

我从数据库中经过加密的user_id生成令牌。就我而言,我不使用任何令牌生成器插件或其他工具。

2 个答案:

答案 0 :(得分:0)

您已经在路由中传递了带有/的令牌,这就是为什么您返回空白响应的原因。

正如您在问题中的最后所说,传递?之类的令牌。 因此,您需要在 header 中传递令牌。 在邮递员标题部分,您必须传递键和值。 您的密钥是令牌。价值是您的令牌,如2y$10$InjSk8VExH76wSyA3OE9a.jhR/3GhAkJdBE3EyQ3O.Z0kCe/r7wpy

阅读此文档: https://learning.getpostman.com/docs/postman/sending-api-requests/requests/

对于laravel api_令牌:

查看laravel官方文档:https://laravel.com/docs/5.8/api-authentication

答案 1 :(得分:0)

是的,我终于知道为什么邮递员的响应为空白。 Queue是资源控制器,但我在其中添加了自定义UserController.php方法。我应该将login()控制器的自定义方法的Route放在route控制器的resource之上。它应该看起来像这样:

Route::get('auth/login','UserController@login');

Route::resource('auth', 'UserController');