是否应该在RESTful API中对单个项目进行分页?

时间:2015-11-11 15:17:47

标签: api rest pagination restful-architecture

在工作中的讨论变得非常分裂。

我从/books

请求了一个集合
{
    "offset": 0,
    "limit": 10,
    "total": 3,
    "results": [
        {
            "id" : 1,
            "title" : "Book 1"
        },
        {
            "id" : 2,
            "title" : "Book 2"

        },
        {
            "id" : 3,
            "title" : "Book 3"

        }
    ]
}

这是分页。

现在,如果我向books/<id>请求特定资源,那么它是否也应该包含在分页结果块中?

有些人认为应该对所有内容进行分页,但有些人认为对一个独特项目的请求应该对此做出响应。所以......

{
    "id" : 1,
    "title" : "Book 1"
}

这对我来说最有意义,因为你没有请求你正在请求该特定项目的集合,为什么需要对单个资源进行分页?

我可以理解这是为了客户的一致性,但我只是想要其他意见,因为我明白没有正确的实现这一点。

提前致谢,

期待每个人的观点:)

2 个答案:

答案 0 :(得分:4)

我们一直都在那里:),由于标准,事情当然更加一致和清洁。我亲自应用jsonapi.org v1.0标准,这对我帮助我提供了很多“标准化”的宁静服务。

回答你的问题,我认为,如果你要求一个实体,那么......用分页包装它是一项额外的工作,你不会使用它。我看到它的方式是,你要求restfull服务器只返回一个实体,所以为什么要返回页面,你不需要它们,你要求一个实体,你知道它!你应该处理它。编程逻辑,只返回/使用你需要的东西,除非你有例外。 (还有另一个问题,重新考虑你的应用程序架构)。

希望这会有所帮助:)

答案 1 :(得分:0)

我的回答是第二位的。不要返回单个实体的分页。结构本身意味着与结果本身一样多的意义。值得注意的是,列表本身只返回一个结果 - 因此分页与请求单个结果并获得完全一个结果。

过去我曾经看过太多次因为这些“优化”而难以辨别的地方出现了错误。坚持使用强大的API定义,并且不会浪费时间调试,这将带来好处。