RESTful API を設計しているときに、「同じオブジェクト」の異なるバージョンにアクセスする方法の問題に遭遇しました。ページ オブジェクトが一意のキーによって識別され、GET /api/page/pagekey によってアクセスされるとします。PUT /api/page/pagekey と本文に適切なドキュメントを送信することで更新できます。
これで、私たちのシステムはページの古いバージョンを追跡し、API 経由でもアクセスしたいと考えています。ドキュメントの古いバージョンがバージョン 1 であると仮定します。ページのこの特定のバージョンにアクセスする API を設計するには、少なくとも 2 つの方法があるようです。
- GET /api/ページ/ページキー/1
- GET /api/page/pagekey?version=1
最初のバリアントは、特定のバージョンを独自のリソースとしてレンダリングします。2 番目のバリアントは、既存のリソースにオプションのバージョン コンテキストを与えます。
- バリアント (1) または (2) はより良い解決策ですか? またはそれを行うためのさらに良い方法はありますか?
- バリアント (1) では、存在しないバージョン番号 (/api/page/pagekey/7 など) を要求すると、HTTP 404 Not Found がトリガーされる可能性がありますが、これは非常に便利です。バージョン パラメータなしで HTTP 200 Ok 応答を返す、既存のリソースのコンテキスト「バージョン」のみを変更するバリアント (2) を考慮すると、これも有効なステータス応答でしょうか?