1

我已经使用 Slim PHP 设置了我的 API。这是获取所有事件的基本 GET 请求。我想使用 Backbone Paginator 对其进行分页。我的主要问题是......如何修改我的 SELECT 语句以接受来自 Backbone 中分页集合的参数?似乎没有详细说明如何设置 API 以接收来自分页器的这些请求。这篇文章是我能来的最接近的,但没有说明您从数据库中实际请求的内容。是否只是一个基本的“如果这个参数存在,则将其添加到 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() .'}}'; 
    }
}
4

1 回答 1

1

我不是 PHP 开发人员,但您确实需要在查询中实现分页。

请参阅MySQL 数据 - 实现分页的最佳方式?有关这方面的信息。

至于您链接的帖子,您可以按照提交者的方法来定义您的查询,其中包括限制:

// where $results is the number of results to return
$sql = "select * FROM events ORDER BY " . $sort . " LIMIT " . $page . " , $results";

至于存在/不存在的参数,您始终可以设置默认值。因此,如果没有请求页面,则提供第一个页面,如果没有请求排序,则按对您的应用有意义的排序。如果存在额外的参数,您可以丢弃它们。

如果你想要一个非常严格的 API,如果请求与端点规范不匹配,你总是可以返回错误

于 2013-06-28T03:45:59.853 回答