如何在我的路由中使用中间件调用 ApiResource?

How to call ApiResource with middleware in my routes?

当我像下面这样使用 middleware 时,没问题:

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

但是如果我尝试将它与 apiResources 一起使用,如下所示:

Route::apiResources([
    'user' => 'API\UserController',
    'posts' => 'API\PostController'
])->middleware('auth:api');

然后我收到一条错误消息:

php artisan route:list

BadMethodCallException

Method Illuminate\Routing\RouteRegistrar::apiResources does not exist.

routes/api.php 中用 middleware 调用 ApiResource 的正确方法是什么?

我认为您不能向 apiResources 添加任何中间件,您可以做的是将它们嵌套在应用它们的路由组中

Route::group(['middleware' => 'auth:api'], function () {
    Route::apiResources([
        'user' => 'API\UserController',
        'posts' => 'API\PostController'
    ]);
});

这还允许您使用 namespace 选项缩短控制器定义:

Route::group(['middleware' => 'auth:api', 'namespace' => 'API'], function () {
    Route::apiResources([
        'user' => 'UserController',
        'posts' => 'PostController'
    ]);
});