Laravel 8 自定义路由 return 使用资源时出现 404

Laravel 8 custom routes return 404 while using resource

API 端点 /clients/entries returns 使用路由设置时出现 404 错误。

Route::apiResource('clients', ClientController::class);
Route::get('clients/entries', [ClientController::class , 'getAll']);

端点只有在重新排列时才起作用,所以资源路由在最后。

Route::get('clients/entries', [ClientController::class , 'getAll']);
Route::apiResource('clients', ClientController::class);

为什么会出现这个问题?还有资源路由放在最后可以吗?

可以在 找到完整的解释(感谢@Espresso)。

总结:

资源路由一开始注册的时候会创建一些路由。示例:

GET   /clients/{client}   show   clients.show

并且当其他自定义路由(例如/clients/entries)在资源路由之后注册时,它将与资源URI冲突(因为它具有相同的模式)。

解法:

在资源路由之前定义自定义路由。

首先: 您需要将请求从 Routes/web.php 定向到 API

Route::get('/{any}', [App\Http\Controllers\ClientController::class, 'index'])->where('any','.*');

来自 routes/api.php 的请求需要得到答复