在restful api中,对于关联的查询应该使用什么id和什么样的描述?

一个关联,比如说用户的某篇收藏文章,可以立马想到的是这个api的URL大概是这种形式

/api/users/{userId}/fav-articles/{id}

那么在这个URL中,id这个参数应该使用谁的id?
是用户-收藏文章这个关联表的id,还是文章的id?
并且,应返回的描述是这个关联,还是这篇文章?
如果是这个关联,那返回的应该只有两者的id以及比如收藏时间等的关联的信息。
而返回这篇文章的话,那就是文章标题、内容等信息了。
或者说两者都应该返回,那形式又应该如何呢?是嵌套还是并列?

阅读 3.5k
2 个回答

文章是某个用户收藏(自己只能看自己收藏)的,所以是某个用户下的资源。
一般情况下不会返回关联的资源。做法有两种:

  1. 现获取关联资源,该资源下有文章ID,然后GET /api/articles/文章ID读取文章
  2. 使用GET参数with
GET /api/users/1/favorites?with=articles // 获取收藏列表
POST /api/users/1/favorites // 新建收藏
PUT /api/users/1/favorites/关联ID // 编辑收藏
GET /api/users/1/favorites/关联ID?with=articles // 收藏详情
DELETE /api/users/1/favorites/关联ID // 删除收藏

我之前在慕课网有篇课程详细讲解了Restful API的设计流程,干货满满,有需要可以去看看https://www.imooc.com/learn/811

新建表 FavArticle - id, userID, articleID.

打开用户收藏的文章列表:
/api/fav-articles/{userID}

然后文章列表某篇文章的连接地址
/api/articles/{articleID}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进