在REST api中,处理项目的用户特定数据的最有效方法是什么?
例如,假设有item
个资源可供人们使用。可以通过以下方式访问项目列表:
https://myservice.com/api/items (Full list)
https://myservice.com/api/items/{id} (Single item)
返回
{
{ 'name': 'name 1' },
{ 'name': 'name 2' },
}
每个项目都可以受到用户的青睐(https://myservice.com/api/user/{id}
),这些收藏的列表将在以下位置提供:
https://myservice.com/api/user/{id}/favorites
这整个设置是无状态的;但是,可能有数百个收藏夹,并且可能不需要检索完整列表。
问:在维护无状态系统的同时,将项目与用户特定数据结合起来的最佳方法是什么?即。获取用户特定的项目列表是明智的还是合理的:
https://myservice.com/api/items?user={id}
{
{ 'name': 'name 1', 'isFavourite':true },
{ 'name': 'name 2', 'isFavourite':false },
}
答案 0 :(得分:0)
在维护无状态系统的同时,将项目与用户特定数据结合起来的最佳方法是什么?
考虑一下如何在网站上进行操作。那是你在REST中的表现方式;你只需要使它具有机器可读性。
这整个设置是无状态的;但是,可能有数百个收藏夹,并且可能不需要检索完整列表。
在这种情况下,您可以跨多个资源分发列表,然后使用paging帮助使用者找到返回列表下一页/上一页的资源。
获取用户特定的项目列表
是明智的还是合理的
是的,当然。要认识到的关键思想是您的REST API是集成域的一部分;您假装一个充满"网页"的网站,并将您对网络资源的操纵转化为您应用中的操作/查询。