无法为序列化准备路由 [api/user]。使用闭包

Posted

技术标签:

【中文标题】无法为序列化准备路由 [api/user]。使用闭包【英文标题】:Unable to prepare route [api/user] for serialization. Uses Closure 【发布时间】:2019-05-21 15:32:50 【问题描述】:

我正在 Laravel 上编写我的项目。当我优化项目时,我遇到了一个问题:

我在 web.php 中查找了任何闭包,但没有找到任何东西

    <?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/','ReviewsController@main')->name('main');
Route::post('/','MailController@verify')->name('verifyPost');

Route::get('/reviews', 'ReviewsController@index')->name('reviews');
Route::post('/reviews','ReviewsController@add')->name('addReview');

Auth::routes();
Route::group(['middleware' => 'admin','prefix' => 'admin'],function () 
    Route::get('/', 'HomeController@index')->name('admin');
    Route::get('/reviews', 'Admin\ReviewsController@get')->name('admin.reviews');
    Route::get('/reviews/accepted/id','Admin\ReviewsController@accept')->where('id','\d+')->name('admin.accepted');
    Route::delete('/reviews/delete','Admin\ReviewsController@delete')->name('reviews.delete');
);

【问题讨论】:

laravel Unable to prepare route ... for serialization. Uses Closure的可能重复 【参考方案1】:

php路由缓存命令:

php artisan route:cache

如果您的应用程序使用基于控制器的路由。它有助于快速执行。但请记住“基于闭包的路由不能被缓存” 因此,请将您的 Closure 路由转换为控制器类。

For more information

【讨论】:

【参考方案2】:

一定要检查“routes/api.php”

【讨论】:

【参考方案3】:

api.php文件中搜索并评论这条路线你不会得到错误..

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

并且在web.php 文件中route::group 也是closure 并且还评论它们以供测试

Route::group(['middleware' => 'admin','prefix' => 'admin'],function () 
    Route::get('/', 'HomeController@index')->name('admin');
    Route::get('/reviews', 'Admin\ReviewsController@get')->name('admin.reviews');
    Route::get('/reviews/accepted/id','Admin\ReviewsController@accept')->where('id','\d+')->name('admin.accepted');
    Route::delete('/reviews/delete','Admin\ReviewsController@delete')->name('reviews.delete');
);

看看closure是什么

【讨论】:

不需要注释掉路由组关闭。这是路线组而不是路线封闭

以上是关于无法为序列化准备路由 [api/user]。使用闭包的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 7:无法为序列化准备路由 [api/user]。使用闭包。 (逻辑异常)[重复]

Laravel 5 - 带有消息“无法准备路由”的异常“LogicException”

Laravel - 错误“无法为序列化准备路由 [/]。使用闭包。”

关于thinkphp配置路由无效果的解决方案

C#进阶系列——WebApi 路由机制剖析:你准备好了吗?

laravel如何使用命名路由