我正在学习如何制作一个好的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'
}
那么,最好的方法是什么?
答案 0 :(得分: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调用以获取所有相关数据。如果响应大小/时间是一个问题,至少给我选项来获得后期相关字段;也考虑回应分页。