Je suis implémentant une API reposante qui expose les commandes en tant que ressource et prend en charge la pagination via les RESEILLET:
GET /orders?start=1&end=30
5 Réponses :
La triste vérité est que tous les sites que je vois ont une pagination "cassée" dans ce sens, il ne doit donc pas y avoir de moyen facile d'atteindre cela. P>
Une solution de contournement rapide pourrait inverser la commande. La position des éléments est donc absolue et immuable avec de nouveaux ajouts. De votre page d'accueil, vous pouvez donner les derniers indices pour assurer une navigation cohérente à partir de là. P>
La façon dont je le ferais, est de rendre les indices de vieux à nouveau. Donc, ils ne changent jamais. Et puis lors de la requête sans paramètre de démarrage, renvoyez la page la plus récente. De plus, la réponse doit contenir un indice indiquant quels éléments sont contenus. Vous pouvez ainsi calculer les indices dont vous avez besoin pour demander la prochaine page plus ancienne. Bien que ce ne soit pas exactement ce que vous voulez, cela ressemble à la solution la plus simple et la plus propre pour moi.
demande initiale forte>: à partir de ceci, le consommateur calcule qu'il souhaite demander: p> au lieu des indices bruts, vous pouvez également renvoyer un lien vers la page suivante: P> obtention / commande? Compte = 30 code> Retours:
Obtenez / commandes? = 1009 & Count = 30 code> qui retourne ensuite: p>
{
"next"="/orders?start=1009&count=30";
}
Avec une API reposante, l'état d'application doit être dans le client. Ici, l'État de l'application doit avoir une sorte de timbre ou de numéro de version lorsque vous avez commencé à regarder les données. Du côté du serveur, vous aurez besoin d'une forme de piste d'audit, qui correspond à des données de serveur correctement, car il ne dépend pas de la question de savoir s'il y a eu des clients et de ce qu'ils ont fait. À tout le moins, il devrait savoir quand les données ont été modifiées. Aucune contradiction avec repos ici. p>
Vous pouvez ajouter un paramètre de version à votre get. Lorsque le client nécessite d'abord une page, elle n'envoie normalement pas une version. Les réponses du serveur contiennent un. Par exemple, s'il existe des liens dans la réponse aux pages suivantes / autres, ces liens contiennent et ... le client doit envoyer la version lorsqu'il nécessite une autre page. p>
Lorsque le serveur reçoit une demande avec une version, elle devrait au moins savoir si les données ont changé car le client a commencé à regarder et, en dépendance de ce que vous avez changé, comment ils ont changé. S'ils ne le sont pas, cela répond normalement, transmettant le même numéro de version. S'ils le sont, cela peut au moins dire au client. Et en fonction de la mesure dans laquelle il sait comment les données ont changé, il peut taylor la réponse en conséquence. p>
Tout comme un exemple, supposons que vous obteniez une demande avec démarrage, fin, version et que vous savez que, étant donné que la version était à jour, 3 lignes arrivant avant le début ont été supprimées. Vous pourriez envoyer une redirection avec Démarrer-3, End-3, nouvelle version. p>
Websockets peut faire cela. Vous pouvez utiliser quelque chose comme pusher.com pour capturer des modifications en temps réel sur votre base de données et transmettre les modifications apportées au client. Vous pouvez ensuite lier différents événements de poussoir pour travailler avec des modèles et des collections. P>
Aller juste le jeter là-bas. S'il vous plaît, n'hésitez pas à me dire si c'est complètement faux et pourquoi donc.
Cette approche tente d'utiliser une variable Considérez que vous devez faire votre résultat commandé par Timeestamp Order_at Desc.
Alors quand je demande le premier set de résultats
C'est P> SELECT * FROM (SELECT * FROM Orders ORDER BY order_at DESC) as a
WHERE a.order_at < '2015-12-21 13:00:49' LIMIT 25;