9
votes

I'm writing my project on Laravel. When I optimize the project, I have a problem :

Unable to prepare route [api/user] for serialization. Uses Closure.

I looked for any closures in web.php, but I didn't find anything

    <?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');
});
3

3 Answers

5
votes

in api.php file search and comment this route you will not get error..

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

and also in web.php file route::group is also closure and also comment them for test

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

see what is closure

2
votes

Php routing cache command :

php artisan route:cache

if your application using controller based routes. It help for fast execution. But remember "Closure based routes cannot be cached" So kindly convert your Closure routes to controller classes.

For more information

0
votes

Make sure to Check "routes/api.php"