Webサイトを完全にAPIベースにすることについて耳にすることがあります。つまり、ブラウザーでさえ、ページはAPIエンドポイントに基づいて構築され、他には何もありません。
これで私が目にする利点の1つは、スマートフォンアプリケーションを作成するときに、動作してテスト済みのAPIがすでにあることです。また、何かを変更する必要がある場合は、デスクトップとモバイルアプリを実質的に同時に変更できます(多少の調整が必要です)。
多分私はどういうわけか考えを誤解しましたが、私はそれの全体的な実行可能性についていくつか質問があります。残念ながら、私はこのトピックに関する良い記事を見つけることができませんでした(これは奇妙です、おそらくこれは人々が行うことではなく、私がそれを完全に誤解しているためです)。
たとえば、範囲を明確にするために、ソーシャルネットワーク風のサイトを構築しているとしましょう。
「シングルページアプリ」について話しているようです
この用語は、実行するアクションのすべてまたはほとんどがクライアント側のjavascript AJAX呼び出しを介して実行され、jsonを取得し、そのjsonをHTMLとページの更新
のではなく:
ブラウザーに新しいhtmlページを要求させ、それがブラウザーによって返されて表示され、古いページが破棄されます。
このアプローチにはマイナス面もあると思いますが、これは現在、Webサイトデザインの事実上の標準アーキテクチャです。単純な理由は、AJAXがページのロードよりも明らかに優れたユーザーエクスペリエンスを提供することです。
このアプローチを実装しやすくするために、reactやangularなどのJavaScriptフレームワークがいくつか利用できます。
したがって、ほとんどの「単一ページアプリ」は[〜#〜] not [〜#〜]すべてが1つのページで実行されます。管理ページ、設定などは、私の経験では通常、分割されており、実質的には別の「単一ページアプリ」になっています。つまり、angularまたは何でも使用するAdmin.htmlがあり、ページ内機能を実行する一連のAPIがあります。
これにより、懸念事項を簡単に分離して、単一ページのアプリが認証で発生する傾向があるいくつかの問題に対処することが容易になります。
サイトのこれらのセクション間の変更は頻繁に行われるものではなく、ページ全体が変更される「大きなステップ」と見なされるため、ユーザーエクスペリエンスは実際には影響を受けません。
ただし、このアプローチが適切な場合は慎重に検討する必要があります。一部のフォームを標準のhttp経由で送信し、一部のフォームをjsフレームワーク経由で送信しても、何のメリットもないように思えます。フレームワークを使用している場合は、それに固執してすべてに使用してください。古いskool htmlを実行している場合は、それに固執してください。両方のアプローチを組み合わせると、単に両方の欠点が得られることになります。
システムにアクセスするあらゆる方法の背後で共有APIを使用することは理にかなっています。このAPIの背後では、エンティティの種類やデータベースからのエンティティのロード方法、ユーザーの認証と承認の処理方法など、繰り返し発生する問題に対処できます。モバイルとデスクトップのような2つの異なるクライアントの違いを、コードの重複なしに実際の違いに限定することを目指してください。
ただし、これは、すべてのフロントエンドでWebサービスを再利用する必要があるという意味ではありません。ここにはいくつかのオプションがあります:
あなたの質問に戻ります:
どこでもAPIエンドポイントに依存するデスクトップバージョンを実行することは本当に意味がありますか?
はい、デスクトップバージョンをモバイルバージョンと同じAPIに依存させることは理にかなっています。いいえ、Webサービスエンドポイントの形式である必要はありません。
これらの選択について詳しく説明すると、 backends-for-frontendsパターン に興味があるかもしれません。