我对 Rest API 和关系有一些疑问。
我知道关系问题对于 Rest 总是很棘手。
我有一些用户、帖子(由用户创建)、用户之间的关系(从 fb 导入)、帖子上的交互(由用户创建)和用户可以喜欢一个帖子。
用户可以创建一个帖子,只有与发帖者有关系(最多 2 跳,如朋友的朋友)的其他用户才能看到,然后可以在帖子上创建互动。
我们根据您的身份验证在后端进行过滤,然后在 /posts 上执行魔术,这将返回您可以看到的帖子列表。
这对我来说有点奇怪,因为它使相同的端点(/posts)将根据当前用户返回不同的数据集。我们当然可以传递一个参数 (?viewable_by_user_id=:id) 来更多地反映它,但我想知道我是否可以做任何事情来改进缓存。
我正在考虑使用以下端点将我们的 API 改进为 v2:
获取/补丁/删除 /users/:id
POST [post] /posts:创建一个帖子(使用当前的 auth 用户作为帖子的所有者)或 POST [post] /users/:id/posts:为这个用户创建一个帖子
GET /users/:id/posts :获取用户创建的帖子
GET /users/:id/stream :获取用户“可查看”的帖子(这是我正在努力解决的问题)或 GET /posts?viewable_by_user=:id
GET /users/:id/like : 获取用户喜欢的帖子 POST [post_id] /users/:id/like : 喜欢帖子
POST [interaction] /posts/:id/interactions : 在帖子上为当前用户创建交互 GET /posts/:id/interactions : 获取帖子的交互
获取/补丁/删除/交互/:id
关于如何使路径更多地反映这种关系的任何想法?我正在考虑为关系创建一个端点,但维护起来似乎有点复杂(用户不手动创建关系,我们从 fb 中提取它们)
感谢您的任何反馈,如果我的问题太模棱两可或无关紧要,请告诉我。