这是我发现自己在处理嵌套资源时经常面临的两难境地。
所以假设目标用户有 n 张照片。GET /users/{id}/photos
定义路由是否有意义,或者我应该GET /photos/{id}
通过首先请求用户对象然后循环遍历该用户的photo_ids
属性来发送 n 个请求?
这是我发现自己在处理嵌套资源时经常面临的两难境地。
所以假设目标用户有 n 张照片。GET /users/{id}/photos
定义路由是否有意义,或者我应该GET /photos/{id}
通过首先请求用户对象然后循环遍历该用户的photo_ids
属性来发送 n 个请求?
从最佳实践的角度来看,我不会针对此类类似资源发送多个请求。在这种情况下,您最终会通过对后端进行速率限制来为自己创造更多的工作,以防止您的用户使用大量图片来炸毁您的服务器。这也会对您的用户体验产生影响。
我建议你这样格式化你的路线:
获取 /users/photos?id={{id}}
并一次性返回所有与该用户 ID 相关的照片。您也可以随时将其限制为每次通话的 X 张照片,并分页:
GET /users/photos?id=658&page={{1,2,3, etc.}}
我个人的偏好总是尝试在 URL 参数中保留可变数据。用了一下午的时间研究了几个不相关的 API,我可以告诉你很多开发人员都同意。