请问 Laravel 中 routes/api.php 自带的 /user 路由是做什么用的?

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

如上代码,
在新创建的laravel中,
routes/api.php 文件内默认有 /user 这么一个路由地址,
直接通过 http:://domain/api/user 访问会出现500错误,
想请教了解的同学,这条路由使用的中间件是做什么用的?如何访问能顺利访问?


我做过以下尝试:

  • 我在 App\Http\Kernel.php 发现是调用了throttlebindings 两个中间件,
    我知道 throttle 这个中间件是用来限制访问频率的,尝试通过查看 \Illuminate\Routing\Middleware\SubstituteBindings 源码得到线索,来解决我的疑惑,并未发现有什么线索。
  • 查看手册 Laravel文档-路由Laravel文档-中间件 也并未得到解决问题的线索。

请同学指点

xahy
xahy
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 5

我理解的是: 示例代码 告诉你怎么使用 middleware('auth:api')

Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); }); 相当于 Route::get('/user', function (Request $request) { return $request->user(); })->middleware('auth:api');

4年前 评论

500 错误是程序代码错误或权限不对,看下报错日志。

4年前 评论
xahy

@likunyan
下面是刚刚请求运行时产生的日志,我看日志中有提示 Route [login] not defined 我也一同创建了一个 Route::get('/login',function(){var_dump(1);}); 路由,并重新访问,也并未解决问题

[2019-12-08 07:19:38] local.ERROR: Route [login] not defined. {"exception":"[object] (Symfony\\Component\\Routing\\Exception\\RouteNotFoundException(code: 0): Route [login] not defined. at C:\
uanjian\\PHPStudy\\PHPTutorial\\WWW\\laravel\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\UrlGenerator.php:420)
[stacktrace]
#0 C:\
uanjian\\PHPStudy\\PHPTutorial\\WWW\\laravel\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\helpers.php(782): Illuminate\\Routing\\UrlGenerator->route('login', Array, true)
#1 C:\
uanjian\\PHPStudy\\PHPTutorial\\WWW\\laravel\\app\\Http\\Middleware\\Authenticate.php(18): route('login')
#2 C:\
uanjian\\PHPStudy\\PHPTutorial\\WWW\\laravel\\vendor\\laravel\\framework\\src\\Illuminate\\Auth\\Middleware\\Authenticate.php(82): App\\Http\\Middleware\\Authenticate->redirectTo(Object(Illuminate\\Http\\Request))
#3 C:\
uanjian\\PHPStudy\\PHPTutorial\\WWW\\laravel\\vendor\\laravel\\framework\\src\\Illuminate\\Auth\\Middleware\\Authenticate.php(67): Illuminate\\Auth\\Middleware\\Authenticate->unauthenticated(Object(Illuminate\\Http\\Request), Array)
#4 C:\
uanjian\\PHPStudy\\PHPTutorial\\WWW\\laravel\\vendor\\laravel\\framework\\src\\Illuminate\\Auth\\Middleware\\Authenticate.php(41): Illuminate\\Auth\\Middleware\\Authenticate->authenticate(Object(Illuminate\\Http\\Request), Array)
#5 C:\
uanjian\\PHPStudy\\PHPTutorial\\WWW\\laravel\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(171): Illuminate\\Auth\\Middleware\\Authenticate->handle(Object(Illuminate\\Http\\Request), Object(Closure), 'api')
#6 C:\
uanjian\\PHPStudy\\PHPTutorial\\WWW\\laravel\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(105): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
"} 
4年前 评论
小李世界 4年前
largezhou 4年前
xahy (作者) (楼主) 4年前
xahy (作者) (楼主) 4年前
小李世界 4年前
xahy (作者) (楼主) 4年前
xahy

@Zhibin 明白了,这个api的中间件是用来效验请求中的 api_token 这个参数的 对吧?

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!