リソースを一貫した階層で定義して、リソースを簡単に理解および予測できるようにすることをお勧めします。
これが質問を取得するためのURLだとしましょう-
GET /users/{solverId}/problems/{problemId}
問題が{solverId}に属していることを明確に伝えています。
次のURLは、{solverId}によって解決された問題のすべての解決策を取得していることを明確に示しています。
GET /users/{solverId}/problems/{problemId}/solutions
{problemId}の新しいソリューションを作成するには、に投稿します。
POST /users/{solverId}/problems/{problemId}/solutions
特定のソリューションを取得するには、
GET /users/{solverId}/problems/{problemId}/solutions/{solutionId}
パスとクエリでIDを使用する場合
リソースを識別するためにIDが確実に必要な場合は、パスでIDを使用します。上記のシナリオでは、ソリューションを一意に識別するために3つのIDがすべて必要であるため、それらすべてがパスに含まれている必要があります。
特定の日付範囲で指定されたソリューションを取得したい場合は、次を使用します。
GET /users/{solverId}/problems/{problemId}/solutions?startDate={}&endDate={}
ここで、startDateとendDateはリソースを一意に識別できません。これらは、結果をフィルタリングするために使用されている単なるパラメーターです。