2016-09-01 13 views
0

私はあなたの助けが必要です。 モバイルアプリケーション向けのバックエンドAPIの設計について考えます。 それはRESTのようなものか別のものでしょうか?モバイルアプリ向けWeb APIデザイン

たとえば、ソーシャルネットワークアプリを作成するとします。 1ページあります。 ページが含まれています

  1. ユーザ情報(ユーザドメインからのいくつかのフィールド)ユーザメッセージの
  2. コレクション(ないメッセージ・ドメインからのすべてのフィールド)
  3. 数値 - ゲスト
  4. 数値のカウント - ユーザーの壁にポストの数

私はこのオプションを参照してください。

  1. すべての4つのドメインのエンドポイントを作成し、4つの要求呼び出し:1つの要求によって

    GET /GetUserProfileInfo?userId=111 
    
  2. その他のオプション

をすべてこの情報を取得するための一つの方法を作成

GET /users/111?fields=id,name,email 
GET /users/111/messages?fields=id,text,date_created 
GET /users/111/guests/count 
GET /users/111/posts/count?filter=news 
  • をそれはあなたが思う?どの変種が良いですか?パフォーマンスはどうですか?それのベストプラクティスは何ですか?

    ありがとうございました。

  • +0

    フロントエンドの構築に使用されるフレームワークは何ですか? – Aravind

    +0

    私はそれが問題ではないと思います。この例ではモバイルアプリについて話しますが、質問は概念についてです。 –

    +0

    私は、モバイルアプリケーションが、例えばjavascript、java c#、xamlなどの多くのフレームワークを使用して構築できることを知って欲しいと思います。どのように関数呼び出しが変わる可能性があり、セキュリティも変わります。あなたの使い方。 – Aravind

    答えて

    0

    あなたが求める質問はかなり広範ですが、うまくいけば、正しい方向にあなたを設定できます。

    私はRESTfulインターフェイスを使用しますが、モバイルアプリケーションからREST APIとSOAP APIの両方に接続する経験があり、RESTは間違いなく簡単です。

    エンドポイントの場合、最初にオプション1に戻ってみるといいでしょう。たとえば、メッセージが別のリソースの場合は、/ messagesのあとに/messages?user=111のような検索パラメータを付けてください。しかし、これは本当にあなたが表現しようとしているリソースに依存します。

    私は動詞と一緒に行くつもりですが、あなたはユーザーに基づいてのみuserprofileを作ることができます。また、ユーザーのさまざまな側面を各ユーザーと同じように組み合わせるのは、単なるクエリまたは一連のクエリだけではありません。私はこのようなもので行くだろう/user/111/profile

    パフォーマンスの点では、バックエンド(おそらくデータベース)にすべてのデータをまとめて1つのリクエストで取得する方が良いでしょう。個別の要求ですべてのビットを取得するシナリオでは、余分なHTTP要求のオーバーヘッドに悩まされています。

    これらの決定のほとんどは実際にAPIの要件に依存しています。また、this question/answerは非常に詳細な説明を与え、おそらくあなたにも役立つはずです。

    +0

    あなたの答えをありがとう。したがって、RESTをモバイルアプリのバックエンドとして使用するのは通常の習慣であると私は理解していますか?しかし、プロファイルのようなカスタムリソースを作成することでリクエスト数を減らすことを考えなければなりませんか? –

    +0

    リクエストを減らすために必ずしも行う必要はありません。それはまた働くためのより明確な方法です。クライアントがuserprofileを取得できるようにしたいのであれば、なぜ複数の要求からそれらをまとめてしまうのでしょうか?そうすれば、userprofileをAPIを通してすぐに利用できるようにするのは理にかなっています。 – ophychius

    関連する問題