Laravelのルーティング
Laravelのルーティングでは、ルートの定義順序によって優先順位が決まるため、
同じURLパスに対して複数のルートが定義されている場合、最初に定義されたルートが優先的にマッチングされます。
例えば、以下のように2つのルートを定義した場合、
Route::get('/users/{userId}', 'getByUserId');
Route::get('/users/recommend', 'getRecommendUsers');
'/users/{userId}'と'/users/recommend'の両方が'/users/'以下にあるため、
'/users/recommend'というURLに対してのリクエストが、'/users/{userId}'のルートにマッチングしてしまう可能性があります。
これは、'/users/{userId}'が'/users/recommend'よりも先に定義されているためです。
解決策
ルートの定義順序を変更する必要する
上記の例では、'/users/recommend'のルートを先に定義することで、
'/users/recommend'に対するリクエストが'/users/recommend'のルートにマッチングされるようになります。
Route::get('/users/recommend', 'getRecommendUsers');
Route::get('/users/{userId}', 'getByUserId');
以上のように、Laravelのルーティングにおいて、
定義順序がルートの優先順位に影響することを意識して、ルートの定義を行う必要があります。