我已经用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,如果请求与端点规范不匹配,则始终可以返回错误

09-28 13:12
查看更多