我已经用Slim PHP设置了我的API。下面是获取所有事件的基本GET请求。我想用主干分页器分页。我的主要问题是…如何修改SELECT语句以接受主干中分页集合的参数?似乎没有详细说明如何设置API来接收来自paginator的这些请求。This post是我能找到的最接近的,但没有提到您从数据库中实际请求的内容。它仅仅是一个基本的“如果这个参数存在,将它添加到MySQL语句中吗?”似乎应该有更好的办法。
$app->get('/events', 'getEvents');
function getEvents() {
// what do I do with the $sort variable?
$sort = $app->request()->params('sort');
$sql = "SELECT * FROM events";
try {
$db = getConnection();
$stmt = $db->query($sql);
$events = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo json_encode($events);
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}
最佳答案
我不是PHP开发人员,但您确实需要在查询中实现分页。
有关此信息,请参见MySQL Data - Best way to implement paging?。
对于链接的帖子,可以按照提交者的方法定义查询,其中包括限制:
// where $results is the number of results to return
$sql = "select * FROM events ORDER BY " . $sort . " LIMIT " . $page . " , $results";
对于存在/不存在的参数,您可以始终设置默认值。因此,如果没有页面被请求,服务第一个,如果没有排序被请求,按任何对你的应用程序有意义的顺序。如果存在额外的参数,可以将其丢弃。
如果需要非常严格的API,如果请求与端点规范不匹配,则始终可以返回错误