2017-01-05 6 views
0

ウェブサイトとモバイルアプリの両方を持つ企業のAPI /バックエンドアーキテクチャの「ベストプラクティス」とは何ですか?ウェブサイトとモバイルアプリの共有API /バックエンド?

いくつかのアーキテクチャのアイデア:

  1. 要求は、Webブラウザやモバイルアプリから来ているかどうかを確認する単一のAPI、それに応じてHTMLまたはJSONで応答
  2. 2つの別々のAPIのための1 (HTMLで応答する)WebサイトとJSONで応答するモバイルアプリ用のWebサイト
  3. JSONだけを返す単一のJSONベースのAPI。ウェブサイト(クライアントサイドのJavaScriptなど)は、JSONの解析とレンダリングを担当します。

StackOverflowの例

例として、StackOverflowのにHTTP GET "/質問" 要求を提出することを検討してください。上記の最初のアーキテクチャは、次のようになります。

Webブラウザ:すべての質問

  • Serverは
  • サーバーのすべての質問を表示するHTMLページを作成するため

    1. https://stackoverflow.com/questions
    2. Serverのユーザー・タイプは、データベースを照会しますquestions.htmlで応答します。
    3. クライアントのウェブブラウザが質問を返します。

    モバイルアプリ:

    1. ユーザーは、すべての質問
    2. Serverは、JSONデータが
    3. すべての質問を含むクライアントのモバイルアプリはJSONデータとディスプレイを解析して応答するためにStackOverflowのモバイルアプリ
    4. Serverがデータベースを照会開きます〜へユーザ
  • 答えて

    1

    私はスターバックスのチームの開発者です。私たちは、モバイルアプリとマイクロサービスで店舗パートナー(従業員)をサポートしています。私たちは消費者/公衆に直面するチームではなく、私たちのアプリケーション/サービスは社内での使用のみを目的としています。

    "バックエンドのフロントエンド"パターンを実装します。プラットフォーム/コアマイクロサービスの作成を担当するAPI /プラットフォームスクラムチームがあります。 Item、Order、StockCountを考えてみましょう。私たちは、これらすべてのコアサービスを使用するウェブアプリとモバイルアプリの両方を持っています。

    各Webおよびモバイルアプリ/モジュールに対応するNodeJS APIがあり、アプリ自体がGoogleのプラットフォームAPIから分離されています。我々はこれらの経験/製品APIをプラットフォームAPIと呼ぶ。当社のプラットフォームAPIは、Akka、Kafka、Dockerなどを使用するJava/Kotlinであり、当社の製品APIはNodeJSであり、シンプル/ダムに構築されています。

    製品APIのこの「中間層」の理由は、モバイル/ Webアプリケーションが特定のニーズに対応できる特定のAPIを持ち、製品チームがNodeJS APIをスライスし、私たちのプラットフォームAPIを呼び出してください。これにより、当社の製品チームは、モバイル/ Webとサーバー側の呼び出しをNodeJS APIに最適化することができます。

    モバイル(アプリ1)=> APIゲートウェイ=> NodeJS(アプリ1)=> APIゲートウェイ=>プラットフォームAPI 1、API 2、API 3(すべてのアプリをサポート)。

    最初にモバイルとSPAの開発を開始したとき、モバイルとウェブの両方が私たちのプラットフォームAPIと直接話していました。これは変更を加えたいときに悲しみをひきおこし、モバイルアプリは最高のデザインではなく、モデルとAPIを密接に結びつけました。

    NodeJSレイヤを使用すると、Mobile/Webアプリケーションが安定した状態に保たれ、問題をNodeJSレイヤにプッシュすることができます。NodeJSレイヤは少なくとも変更が簡単で、展開を完全に制御できます。

    ロングったらしい答え、申し訳ありません:)

    EDIT:あなたの3つの質問については 、私はこれらのアンチパターンを検討するとの懸念を混合に対して推薦します。

    REST APIはプレゼンテーション(HTML、ページ上に表示されるもの)ではなく、公開データに関連するものであるべきです。

    私の経験と読書の年数に基づいて、私のAPIにHTMLを返すことは決してないと考えられています。表示するウェブ/モバイルアプリ(懸念事項の分離、SRP、よくあること)

    関連する問題