我正在设计一个API,它不仅支持访问单个资源,还可以同时访问多个资源。
例如,每个用户有20个朋友。
GET foobar.com/users/me/friends/1
将返回朋友编号1.获取所有用户也没问题,但是如果我想获得多个特定用户,我可以使用下面的查询吗?
GET foobar.com/users/me/friends?id=1,3,5-9,20
或者有更好的方法来实现这一目标吗?
谢谢你们!
答案 0 :(得分:1)
执行您正在寻找的内容的缓存友好方式是发出一系列GET
个请求,每个用户一个。您的方法的问题是这两个请求是分开缓存的,尽管返回的大多数数据是相同的:
GET foobar.com/users/me/friends?id=1-10
GET foobar.com/users/me/friends?id=1-9
如果/朋友正在使用非常有限的数据和超链接返回结果集合以获取朋友的完整数据,那么您的方法是合理的。如果朋友数据无法在客户端缓存,并且您不支持条件GET
,那么它也应该没问题 - 但是如果您稍后添加这些功能,则无法在此处利用它们。如果集合返回每个朋友的完整数据集,请考虑利用缓存/条件GET
并为每个用户发出单独的请求。
并且不要说"表现"直到你在现实世界的环境中进行测试,这是一个经过验证的问题! :-)