如何有效地在RESTFUL API中进行分页?
我想在RESTful API中支持分页 我的API方法应该通过返回产品的JSON列表,可能有数千种产品,我想翻阅它们,因此我的请求应该如下所示:如何有效地在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
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的独立性,这也简化了通过代理进行的基于语义的自动调用。