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