我的数据模型是这样的:
User: id, email, hashed_password
Item: id, name, color
UserItem: user_id, item_id, rating
并且我想编写一个RESTful API来获取这些资源。通过OAuth 2使用JWT令牌(包含已记录的用户ID)提供身份验证。
URL结构的第一个想法是(我仍然没有身份验证时选择的一个:]
/items/{item_id}
/users/{user_id}
/users/{user_id}/items/{item_id}
在这种情况下,标识为1的用户可以使用:
GET /users/1
以获取自己的信息;GET /users/1/items
获得自己的物品(带有等级);GET /items
以获取可以添加到收藏夹的所有项目。我认为此解决方案很明确,但也很简单。
好:
坏:
GET /users/1/items
?]。>>鉴于您可以从令牌中提取用户ID,因此结构也可以更简单:
/items/{item_id} /users/{user_id}
在这种情况下,标识为1的用户可以使用:
GET /users/me
以获取自己的信息;GET /items?class=owned
获得自己的物品(带有等级);GET /items?class=all
以获取可以添加到收藏夹的所有项目。此解决方案有点混乱,但可能更优雅。
好:
GET /items
来获得您自己的物品。坏:
GET /items?user=3
之类的东西?]。老实说,在这种情况下,我不知道什么是最佳实践。我觉得这两者都有些问题。也许我没有看到一种混合方法?
您将如何组织这样的模型?
我的数据模型是这样的:用户:id,电子邮件,hashed_password项目:id,名称,颜色UserItem:user_id,item_id,等级,我想编写一个RESTful API来获取这些资源。身份验证为...
您可以查看类似HAL的格式。 HAL为您提供了一种描述特定资源(项目)的方法,并允许您创建指向这些资源的多个集合。