2016-08-04 12 views
0

私はREST APIを構築しています。私が解決しようとしている問題の簡単な例は、2つのドメインエンティティ:&の投稿です。現在、http://myapidomain.com/postsへのGETリクエストは、各投稿にこの特定の投稿に関するコメントへのリンクが含まれている投稿集を返します。私は、コメントリストがそれらを指し示すURLではなく行内に表示されるように、コメントリンクをレスポンスに展開できるようにするつもりです。それぞれのアプローチには長所と短所がありますが、どちらのオプションも含めるのが良い理由です。ネストしたリソースもページングする必要がありますか?

私の問題は、例えば、/ postsへの私のGET要求が、リンクの代わりにコメントのリストが含まれている投稿のページリスト(ページサイズが10など)を返すということです。ネストしたリソースもページングする必要がありますか? 1つの投稿に無制限の数のコメントが含まれる可能性があることを心配しています。したがって、10の投稿のリストには、1つの投稿に対して100秒分のコメントが多い投稿が1つ以上ある可能性があります。したがって、内部/ネストされたリソースもページングする必要がありますか、またはその状況に対処する標準的な方法がありますか?

答えて

1

コレクションのサブリソースへのリンクを含めることは良い方法です。クライアントがコレクションを必要とする場合、リンクへの新しい要求を実行できます。

しかし、何らかの理由で、各投稿ごとに事前に読み込まれたコメントが必要な場合は、コメントの最初のページのみを含め、次のページを読み込むためのリンクを提供することを検討します。

{ 
    "data": [ 
    { 
     "id": 1, 
     "title": "It's a post", 
     "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit...", 
     "comments": { 
     "data": [ 
      { 
      "content": "It's a comment", 
      "author": "John Doe" 
      }, 
      { 
      "content": "It's comment", 
      "author": "Jane Doe" 
      }, 
      ... 
     ], 
     "paging": { 
      "next": "http://api.example.com/posts/1/comments?page=2&size=10" 
     } 
     } 
    }, 
    ... 
    ], 
    "paging": { 
    "previous": "http://api.example.com/posts?page=1&size=10", 
    "next": "http://api.example.com/posts?page=3&size=10" 
    } 
} 
関連する問題