0

優れたRESTAPIを作成する方法を学んでいます。したがって、次のモデルがあるとします。

Post
    has title, body, publish_date
    has_many comments, authors

Comment
    has author, publish_date

それで、私が電話した場合GET /post、すべての投稿を取得するには、コメントをどのように返す必要がありますか?私は次のようなことを考えています:

{
    'post/1': {
        'title': 'My first post',
        'body': 'a big body',
        'publish_date': '20121120',
        'comments': 'post/1/comments',
        'authors': 'post/1/authors'
    },
    'post/2': {
        'title': 'Another post',
        'body': 'a REALLY BIG body',
        'publish_date': '20121121',
        'comments': 'post/2/comments',
        'authors': 'post/2/authors'
    }
}

また、各コメントのリソースを直接/post返信することも考えています。

'comments': {
    'post/1/comment/1',
    'post/1/comment/2',
    'post/1/comment/3'
}

それで、最良のアプローチは何ですか?

4

1 に答える 1

0

各投稿がそのコメントを「所有」している場合は、投稿データとともにコメントデータを送信するだけです。

{
    'post/1': {
        'title': 'My first post',
        'body': 'a big body',
        'publish_date': '20121120',
        'comments': [/* comment data here */],
        'authors': 'post/1/authors'
    },
    'post/2': {
        'title': 'Another post',
        'body': 'a REALLY BIG body',
        'publish_date': '20121121',
        'comments': [/* comment data here */],
        'authors': 'post/2/authors'
    }
}

あなたは作者と同じことをしたいかもしれません。経験則:APIの利用者として、関連するすべてのデータを取得するためにAPI呼び出しを繰り返し行う必要はありません。応答のサイズ/時間が懸念される場合は、少なくとも関連後のフィールドを取得するオプションを教えてください。応答のページネーションも検討してください。

于 2012-11-21T18:15:36.977 に答える