环境:ASP.NET MVC 4 Web API
鉴于GET的RESTful标准是:
http://www.example.com/api/entity/返回所有实体的集合
http://www.example.com/api/entity/{id}返回ID为{id}的实体
...如果有太多“实体”以至于进行第一个调用将返回大量的结果数据,该怎么办?
我可以完全禁止该调用并返回HTTP 500之类的东西,但是我宁愿遵循标准并实现某种范围选项,尽管可能是任意的。
我一直在寻找HTTP标头,该标头允许使用等价于分页和遇到的问题Accept-Ranges,但是找不到适用的示例(如果从一开始就正确)。我在正确的轨道上吗?有没有可能有用的资源?
Accept-Ranges是一个响应标头,因此不能帮助您将分页请求从客户端发送到服务器。该规范允许您返回此标头的任何值(尽管唯一的标准化值是bytes),因此您可以将Accept-Ranges其用作服务器通知客户端您的 API 支持分页的一种方式,但说实话,这可能没有那么有用。
匹配的请求头是Range. 该标头的值是 a ranges-specifier,但不幸的是,根据规范,该标头的唯一有效值是 a byte-ranges-specifier,The first 500 bytes (byte offsets 0-499, inclusive): bytes=0-499它对于我们想要的类型分页没有用处。
由于没有标准,您只需编写自己的请求标头或查询参数即可进行分页。以下是我们为我正在开发的 RESTful API 所做的工作:
GET /users/?offset=10&limit=50
{
"users": [...],
"offset": 10,
"limit": 50,
"total": 10000
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
616 次 |
| 最近记录: |