Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何有效地在RESTFUL API中进行分页?_Api_Rest_Restful Architecture_Restful Url - Fatal编程技术网

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

如何有效地在RESTFUL API中进行分页?,api,rest,restful-architecture,restful-url,Api,Rest,Restful Architecture,Restful Url,我想在RESTful API中支持分页 我的API方法应该通过返回产品的JSON列表,可能有数千种产品,我想翻阅它们,因此我的请求应该如下所示: public function getProductsByCategory($product_id,$page){ $perPage=5; $start=($page-1)*$perPage; $stmt=$this->conn->prepare

我想在RESTful API中支持分页

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

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;
      }

      }

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

因此,URL应该是

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

并在与
localhost/products/v1/category


希望这能有所帮助。

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

因此,URL应该是

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

并在与
localhost/products/v1/category


希望这能有所帮助。

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

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

http://localhost/products/v1/category?pageSize=5&pageNumber=2

然后,您只需在服务器端选择相应的元素(考虑是否希望页码使用基于0或1的索引),然后返回它们


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

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

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

http://localhost/products/v1/category?pageSize=5&pageNumber=2

然后,您只需在服务器端选择相应的元素(考虑是否希望页码使用基于0或1的索引),然后返回它们


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

我通过post方法获取category_id上的前五条记录。然后我想对它们进行分页,以便如何以json格式实现我没有找到一个逻辑,您无法通过“post”获取。你需要得到它。Use jackson for java json conversion.REST不关心URI设计TBH。然而,人类确实如此。如果API的目标是人类,你忽略了REST背后的思想要点——客户端实现与服务器API的独立性,这也简化了通过代理进行的基于语义的自动调用。我通过post方法获取category_id上的前五条记录。然后我想对它们进行分页,以便如何以json格式实现我没有找到一个逻辑,你无法找到通过“post”获取。你需要得到它。Use jackson for java json conversion.REST不关心URI设计TBH。然而,人类确实如此。如果您的API的目标是人,那么您通常会忽略REST背后的思想要点——客户端实现与服务器API的独立性,这也简化了通过代理进行的基于语义的自动调用。