如果RESTful Web API默认GET会返回太多结果怎么办?

环境: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或其他东西,但我宁愿遵守标准并实现某种范围选项,尽管它可能是任意的.

我一直在寻找可以允许等同于分页并遇到Accept-Ranges的HTTP标头,但找不到一个适用的例子(如果开始时甚至是正确的).我是在正确的轨道上吗?有没有可能有帮助的资源?

最佳答案 Accept-Ranges是一个响应标头,因此无法帮助您将客户端的分页请求发送到服务器.规范允许您返回此标头的任何值(尽管唯一的标准化值是字节),因此您可以使用Accept-Ranges作为服务器通知客户端您的API支持分页的方式,但TBH可能不是有用.

匹配请求标头是Range.此标头的值是范围说明符,但遗憾的是,根据规范,唯一有效的值是字节范围说明符,例如前500字节(字节偏移0-499,包含):bytes = 0-499,这对我们想要的类型分页没用.

由于没有标准,您只需要编写自己的请求标头或查询参数以进行分页.以下是我们为正在开发的RESTful API所做的工作:

GET / users /?offset = 10& limit = 50

{
    "users": [...],
    "offset": 10,
    "limit": 50,
    "total": 10000
}
点赞