0

我正在学习如何制作一个好的 REST API。所以,假设我有以下模型:

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 回答