REST APIを開発しています。このAPIは、JavaScriptを介してHTML5フロントエンドによって使用されます。このアプリケーションは組織内で使用するためのもので、通常約300人のユーザーがいますが、 1000ユーザー程度までです。
通常、APIへの接続はLAN内で行われるため、接続の品質とレイテンシは良好ですが、接続が低速で、3G/4G経由の遅延が大きくなる可能性があるインターネット経由での時折の使用は除外されません。
私たちが考えた2つのオプションは次のとおりです。
フロントエンドは、APIに対して複数の非同期呼び出しを同時に行って、インターフェースのさまざまなコンポーネントをロードします。
フロントエンドのコントローラーは、取得する必要のあるオブジェクトをパラメーターとして渡して、APIを1回呼び出します。
詳細説明:異なるリソース.../Product .../Locationsなどがあります。これらのリソースは単独でフェッチできますが、1つの呼び出しで両方をフェッチする別の抽象リソース.../screen?Product&Locationsがあります。
次の理由により、オプション1(複数の非同期呼び出し)が最適です。
/products
にリクエストを送信し、人気のある製品が販売されている場所のリストも表示したい場合、2つの個別のリソースがあります:Product
およびLocation
。同じページに表示されますが、論理的に論理的に/products
を呼び出して、場所も返すことはできません。/products
にリクエストを送信し、場所もロードしている場合、ログファイルは本当に混乱します。重要な点は、リソースが個別であることであり、REST APIでは、単一のAPIパスから多くの個別のリソースを返すことは、「サーバーへの接続を保存する」場合でも意味がありません。ところで、パラメーターを使用して(異なる)リソースを条件付きでロードすることはRESTfulではありません。
そうは言っても、唯一の論理的なオプションは、リソースを分離するために複数の非同期リクエストを行うことです:モジュラーアプローチを取る!
PS-「サーバーへの接続」を途中で最適化しないでください。特に、HTTP接続のオーバーヘッドが非常に低く、LAN上にいる場合は特にそうです。すぐにシンプルなデザインを選択する代わりにそのような考えをすると、後で問題が発生します。