GET Route Laravel 中的 URL 参数

Posted

技术标签:

【中文标题】GET Route Laravel 中的 URL 参数【英文标题】:URL Parameter in GET Route Laravel 【发布时间】:2020-03-12 10:06:45 【问题描述】:

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

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

然后,我使用 Postman 来检查这个 API 端点,如下所示:

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

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

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

那么,如何使用"?"在URL中发送token参数

编辑 2...

我从数据库中的 bcrypted user_id 生成令牌。就我而言,我不使用任何令牌生成器插件或其他东西。

【问题讨论】:

这个函数可能会在 3 个地方结束。他们中只有 2 个返回任何东西。 @miken32 你的意思是我必须添加另一个else 【参考方案1】:

是的,我终于知道为什么Postman中的响应为空白的原因了。 UserController.php 是一个资源控制器,但我在其中添加了一个自定义的 login() 方法。我应该将自定义方法的Route 放在resource 控制器的route 上方。它应该是这样的:

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

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

【讨论】:

【参考方案2】:

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

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

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

对于 laravel api_token:

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

【讨论】:

感谢您的方法。我试过了。起初,在 Postman 中,我使用 Params 选项卡并发送 token 作为 Key$2y$10$InjSk8VExH76wSyA3OE9a.jhR/3GhAkJdBE3EyQ3O。 Z0kCe/r7wpy 作为。然后,在 URL 中显示 host/api/v1/auth/logout?token=_token_。但是当我按照你所说的那样在 Postman 中使用 Header 选项卡时,URL 只是 host/api/v1/auth/logout,并且知道为什么它仍然返回一个空白页。我做错什么了吗?再次感谢。 @DaniFadli 是的,当您使用header 选项卡时,标题值不会显示在 URL 上。所以你的要求params标签没问题。

以上是关于GET Route Laravel 中的 URL 参数的主要内容,如果未能解决你的问题,请参考以下文章

Blade 中的 laravel 7 路由/url 参数

Laravel 4:重定向后 URL 中的垃圾值

laravel 4: URL::route vs jquery

从 Laravel 中的 url 获取最新的 slug

Laravel:布局中的脚本和图像源在带有前缀的url中不起作用

总结7.17 laravel路由