当前位置: 首页 > 知识库问答 >
问题:

如何在RESTFUL API中有效地进行分页?

梅逸清
2023-03-14

我想在RESTful API中支持分页。

我的API方法应该通过返回产品的JSON列表http://localhost/products/v1/getproductsbycategory,可能有数千种产品,我想翻阅它们,因此我的请求应该如下所示:

public function getProductsByCategory($product_id,$page){
                $perPage=5;
                $start=($page-1)*$perPage;
                $stmt=$this->conn->prepare("SELECT id,product,description,destination_url,expiry_type,savings,expiry,title,last_updated_on  FROM products   WHERE product_id=?   ORDER BY  last_updted_on DESC LIMIT $start ,$perPage");
                $stmt->bind_param('i',$category_id);
                $stmt->execute();
                $productbycategory=$stmt->get_result();
                $stmt->close();
                return $productbycategory;
      }

      }

共有2个答案

柳韬
2023-03-14

分页与JSON格式本身无关——它只是关于URL中的查询字符串以及服务器如何解释它。

扩展@Sampada的答案,您可以有一个URL,例如

<代码>http://localhost/products/v1/category?pageSize=5

然后您只需在服务器端选择相应的元素(考虑pageNumber是否需要基于0或1的索引),并返回它们。

此外,您可以将此集合包装在一个对象中,该对象还提供导航到上一页/下一页/特定页的链接-请参阅HATEOAS

鲍理
2023-03-14

首先,在RESTful调用中,URL最好是基于名词的,而不是动词。在您的案例中,我们使用HTTP动词(GET、PUT、POST等)对名词产品执行操作。

因此,URL应该是http://localhost/products/v1/category

这实际上意味着您将获得基于类别的v1类型的产品。要获得给定的页码,只需将其添加为查询参数-

http://localhost/products/v1/category?page=1

并在对应于本地主机/产品/v1/类别的GET实现中相应地处理它

希望这有帮助。

 类似资料:
  • 问题内容: 我搜索并没有找到解决该问题的Go解决方案,无论是否使用,都没有,也没有在其他任何站点上。 假设我们在Gogo中建模了一个MongoDB集合: 我们希望根据某些条件对用户进行排序和列出,但是由于预期结果列表较长,因此已实现了分页。 为了实现对某些查询结果的分页,MongoDB和驱动程序包以和的形式内置支持,例如: 但是,如果页数增加,这将变得很慢,因为MongoDB不能仅“神奇地”跳到结

  • 问题内容: 我有一个内存中大约有1000个项目的数据集,正在尝试为此数据集创建一个传呼机,但是我不确定如何执行此操作。 我使用的是自定义过滤器功能来过滤结果,效果很好,但是以某种方式我需要获取页面数。 有什么线索吗? 问题答案: 查看UI Bootstrap的分页指令。我最终使用了它,而不是使用此处发布的内容,因为它具有当前使用的足够功能,并且具有详尽的测试规范。 视图 控制者 我做了一个工作的小

  • 假设您有一个程序,给定一个数字二进制数,,返回时间中数字的质因数之一(注意,我在θ符号中使用了小写。) 使用这个算法,我想找到一个有效的算法,将一个-位二进制数分解为素数并打印素数因子。此外,我想知道算法作为的函数运行的速度有多快,我还想计算我的算法在最坏情况下使用oracle作为 n函数的近似次数。 假设时间加/除/乘/减两位二进制数。 下面是一个有效的算法: < li >调用< code>on

  • 我们有一个web应用程序,帮助组织生物实验(用户描述实验和上传实验数据)。在主页中,我们展示了前10个实验,然后在上一个下一个1 2 3..30. 我虫子我如何使有效的总计数和分页。目前: 我想开发分页,总是执行相同的。记录计数不得影响分页或记录总数。