たとえば、クライアント、レポートなどのエンティティがあります。クライアントには多くのレポートがある可能性があり、単一のレポート管理のエンドポイントは次のようにネストする必要があると思います。
/clients/{client_id}/reports/{report_id}
1つのクライアントのすべてのレポートに関しては、エンドポイントが期待されます。
/clients/{client_id}/reports
しかし、すべてのクライアントのすべてのレポートを取得して、APIの一貫性と適切な設計を維持するためのエンドポイントをどのように見ればよいか
私のアプローチ:
- (私はそれをいくつかのgoogle apiで見ました)それの代わりに「-」を使用し、それを「すべて」として解析します:
/clients/-/reports
これはエンドポイントのフォーマットを同じに保ちますが、少し変わって見え、この方法を示唆するrfcを見つけることができません。
- すべてのレポートのためだけに別のエンドポイントを作成します。
/reports
ただし、クライアントのレポートを取得するには、次のようにします。
/clients/{client_id}/reports
- エンドポイントをリファクタリングして、「クライアント」を親ではなく、単なるフィルタパラメータにします。
/reports?client={client_id}
-1つのクライアントのレポート
/reports
-すべてのクライアントのレポート
特定のクライアントのレポートを投稿するための新しいエンドポイントを追加する場合、URLにパラメーターを持つPOSTリクエストになるため、見栄えが悪くなる可能性があります。
他にアイデアの提案はありますか?