2016-10-15 1 views
3

たとえば、書籍の詳細をモバイルアプリケーションに渡すAPIを持っているとします。ユーザーは書籍のリストをブラウズし、希望リストに書籍を追加することができます。残りのAPIリソース内の個々のユーザーデータを返すのは問題ありませんか?

私の質問は、1つの本または書籍のコレクションを返すとき、各書籍リソースにユーザー固有の情報を含めることをお勧めしますか?これはつまり、各本には、その本がユーザーの希望リストにあるかどうかを示すフィールドを含めることができますか、このリストは別に返され、このチェックを実行するモバイルアプリケーションまでです。

モバイルアプリの開発者は/ booksに電話をかけて、このようなレスポンスを受け取ることをお勧めします。

{ 
    "books": [ 
    { 
     "id":1, 
     "name": "How to be good at everything", 
     "price": 3.99, 
     "in_wish_list": true 
    }, 
    { 
     "id":2, 
     "name": "How to be good at nothing", 
     "price": 6.50, 
     "in_wish_list": false 
    } 
    ] 
} 

私はこのデータを複数のエンドポイントに分割したいと考えています。

/ユーザー/ 29 /ウィッシュリスト

{ 
    "wishlist": [1,7,9,34,28] 
} 

/ブック

{ 
    "books": [ 
    { 
     "id":1, 
     "name": "How to be good at everything", 
     "price": 3.99 
    }, 
    { 
     "id":2, 
     "name": "How to be good at nothing", 
     "price": 6.50 
    } 
    ] 
} 

モバイルアプリケーションは本がウィッシュリストのユーザーであるかどうかを決定する責任があるこの方法です。

ユーザーのデータをブックリソースに埋め込むメリットがありますが、それは正しいとは感じません。

このような状況を他のどのように管理するのだろうか?

+0

実際には、APIを設計するすべての人がこのような状況を処理します。私の[回答](http://stackoverflow.com/questions/39685396/should-i-return-id-of-associated-entity-or-whole-entity/39685477#39685477)を見て、非常によく似た質問にしてくださいそれもここで適用する必要があります。 – rorschach

+0

クライアント開発者は、特にモバイルアプリケーション内の特定のビューにその情報が必要な場合に、常に単一の要求/応答でできるだけ多くの情報を必要としています。私はこれがモバイルアプリケーションとの統合を助けてくれることに同意しますが、APIがクライアントに合わせて調整されているように感じます。私がやっていることは、複数のエンドポイント間で応答を返すことから、モバイルアプリケーションビューに合わせた応答を返すことと、より多くの呼び出しを行うことでクライアントアプリケーションにもっと多くの作業を強いることの間に重荷があることだと思います。 – SheppardDigital

答えて

0

今、あなたのAPIを誰が消費するのか、どのように使用するのかによって異なります。ユーザーの欲しい書籍を表示する必要がある場合は、別のエンドポイントが必要です。もちろん、モバイルクライアントの開発者は、いくつかの小さなクライアントへの多額の呼び出しを好むでしょうが、別のユーザーウィッシュリストエンドポイント(それについてのユースケースシナリオがあれば)を妥協して両方持っていて、 APIへの呼び出し回数が減少することさえあります。

関連する問題