请问 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
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

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年前 评论

我理解的是: 示例代码 告诉你怎么使用 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');

3年前 评论

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