我想在我的RESTful API中支持分页 .
我的API方法应该通过http://localhost/products/v1/getproductsbycategory返回产品的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;
}
}
2 回答
首先,在RESTful调用中,URL理想情况下应该是基于名词而不是动词 . 我们使用HTTP动词(GET,PUT,POST等)对你的名词 - 产品做一个动作 .
所以,URL应为http://localhost/products/v1/category
这实际上意味着您要根据类别获取v1类型的产品 . 要获取给定的页码,只需将其添加为查询参数 -
http://localhost/products/v1/category?page=1
并在对应于
localhost/products/v1/category
的GET实现中相应地处理它希望这可以帮助 .
分页与JSON格式本身无关 - 它与URL中的查询字符串以及服务器如何解释它有关 .
扩展@Sampada的答案,你可以有一个像这样的URL
http://localhost/products/v1/category?pageSize=5&pageNumber=2
然后你只需在服务器端选择相应的元素(考虑你是否需要pageNumber的0或1索引),然后返回它们 .
此外,您可以将此集合包装在一个对象中,该对象还提供链接以导航到上一个/下一个/特定页面 - 请参阅HATEOAS&Richardson's Maturity Model level 3 .