HTTP経由でRESTAPIを設計しようとしています。私はこれにまったく慣れていないので、私の仮定やアイデアのいずれかがまったく間違っているかどうか教えてください。
ドメインはミニマルです。製品のデータベースがあり、製品ごとに関連する画像があります。ご覧のとおり、APIは次の2つの方法のいずれかで設計できます。
各画像をその製品にバンドルして、1つのリソースとして表すことができます。このAPIの短所は、製品を配置または取得するたびに、画像を特に読み取ったり変更したりする必要がない場合でも、画像をネットワーク経由で送信する必要があることです。私の理解では、リソースの完全な表現をPUTまたはGETしないことはRESTfulではありません。また、このシナリオでは、クライアント側での画像のキャッシュは役に立ちません。
製品と画像を2つの異なるリソースとしてモデル化できます。商品をGETすると、画像のGETに使用できるimage_idが含まれます。このモデルには、2つのHTTPリクエストが必要です。1つは製品を取得し、もう1つは対応する画像を取得します。それほど悪くはないかもしれませんが、すべての製品のリストとその画像を表示したい場合はどうすればよいですか?それから私は突然たくさんのHTTPリクエストを持っています。SSLを使用している場合、これによりパフォーマンスの問題が発生する可能性があると思います。ただし、私のAPIの利用者は、クライアント側で画像をキャッシュすることを選択できるのは良いことです。
では、RESTfulで効率的なAPIをモデル化するにはどうすればよいですか?