web-dev-qa-db-ja.com

複数のフロントエンドアプリ1バックエンドAPI

いくつか(2-3)の異なるシステム(フロントエンド)を構築する必要があります。それらは異なる用途とユーザーを持っていますが、それらすべてのシステムのデータは1つのDBにあります。

例:1番目のシステムは顧客向けのサイトです2番目のシステムは顧客向けのモバイルアプリ(Androidおよびios)です(サイトと同様ですが、異なるビュー/データを持つことができます)3番目のシステムは、管理者が顧客を管理できるバックオフィスアプリです

データが1つのDBにあるため、すべてのフロントエンドをサポートする1​​つのバックエンドAPIを作成することを計画していました。

ただし、認証と承認の部分(フロントエンドがバックエンドと通信する方法)を計画しようとすればするほど、複雑になりすぎます。

コード/機能の重複や違いの問題を防ぐために、1つのバックエンドAPIを求めています。たとえば、「顧客の編集」には多くの手順が含まれ、各フロントエンドを介して可能です。同じ機能の3つの一貫性のないバージョンを使用したくありません。

誰かが同様のニーズを持っていて、良い解決策を見つけましたか?

現在の私の主な問題は、各アプリの特定の機能をどのように保護し、ユーザー+フロントエンドアプリごとにAPIルートを保護するかです。

どのフロントエンドテクノロジーを使用するかについての提案を受け入れることができます。バックエンドはnodejsです。

ありがとうございました

1
BugzyB

私はあなたが計画したように単一のバックエンドAPIを作成し、フロントエンドに関する情報を次のようなURLに保存します。

http://mobile.localhost/customers

http://web.localhost/customers

次に、この情報をリクエストオブジェクトに追加します(使用する言語、フレームワークに応じて、実行方法は異なります)。これは、ユーザーロールを使用するときに使用します。この情報を使用して、URLを保護できます。フロントエンドに応じて、APIが別のことを実行したり、別の方法で実行したりする必要がある場合は、APIにも他の方法で配置できます。

よろしく。

1
norbert.mate

複数のフロントエンドに1つのバックエンドを使用することと、各フロントエンドを独自のバックエンドに書き込むことの間に違いはありません。フロントエンドについては触れませんが、angularjsはクラスなどで非常に使いやすいですが、可能であれば、バックエンドに継承を使用してください。

共通の機能を持つ親クラスを作成し、各バックエンドから継承します(たとえば、3つのクラスはありますが、面倒は少なくなります)。この方法では、同じ機能を複製する必要はありませんが、必要に応じて特殊化できます。

1
sevcodes

3つのオプションがあります。

  1. すべてのフロントエンドが同じ認証サーバーを使用するようにします。バックエンドはトークンを検証し、クレームをチェックできます。

  2. バックエンドが各フロントエンドのリクエストを認証できるようにします。たとえば、可能な署名キーのセットをチェックすることができます。

  3. バックエンドに個別の認証方法を用意します。たとえば、フロントエンドのそれぞれが知っているAPIキーを言います。

    このキーをエンドユーザーから隠すには、各フロントエンドに、フロントエンド認証を理解し、シークレットAPIキーを追加し、バックエンドを呼び出して結果を返す単純なバックエンドが必要になる場合があります。

1
Ewan