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

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

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

我在 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');
});

【问题讨论】:

标签: php laravel laravel-5


【解决方案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是什么

      【讨论】:

      • 不需要注释掉路由组关闭。这是路线组而不是路线封闭
      猜你喜欢
      • 2020-03-13
      • 2020-08-27
      • 1970-01-01
      • 2018-12-04
      • 2017-12-29
      • 2020-06-19
      • 2019-11-11
      • 2021-08-24
      • 1970-01-01
      相关资源
      最近更新 更多