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 的请求需要得到答复
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);
为什么会出现这个问题?还有资源路由放在最后可以吗?
可以在
总结:
资源路由一开始注册的时候会创建一些路由。示例:
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 的请求需要得到答复