Calcolo di offset e limite per la paginazione
Converta un numero di pagina basato su uno nei valori esatti richiesti da una query con offset.
Esegui gratis nel browser
Indichi la pagina desiderata, il numero massimo di record per pagina e il totale degli elementi disponibili. Il calcolatore restituisce l’offset basato su zero, il limite della query e il numero totale di pagine. Rifiuta inoltre numeri o dimensioni di pagina inferiori a uno, aiutandoLa a evitare query di database non valide e controlli di navigazione incoerenti.
Converta una richiesta di pagina in parametri di query
Le interfacce presentano di solito la paginazione con numeri di pagina intuitivi, mentre database e API richiedono spesso un offset basato su zero e un limite. Questo calcolatore collega le due convenzioni. Inserisca un numero di pagina che parta da uno, una dimensione e il totale degli elementi dell’intera raccolta. L’offset si calcola sottraendo uno dal numero di pagina e moltiplicando il risultato per la dimensione. Il limite coincide con la dimensione stessa. Per esempio, la terza pagina di una raccolta mostrata in gruppi di venticinque inizia dopo i primi cinquanta elementi; pertanto, l’offset è cinquanta e il limite venticinque. Può passare questi valori direttamente a una comune clausola SQL LIMIT e OFFSET oppure associarli ai parametri equivalenti di un altro servizio. Il risultato è deterministico e non esamina né recupera i record sottostanti. Esegue soltanto l’aritmetica necessaria per preparare una richiesta paginata, risultando utile in backend, script, test, documentazione e sessioni di diagnosi.
Comprenda le pagine totali e i casi limite
Il numero totale di pagine si ottiene dividendo il totale degli elementi per la dimensione della pagina e arrotondando per eccesso. L’arrotondamento è importante perché una pagina finale riempita solo in parte rimane comunque una pagina. Se centouno elementi vengono visualizzati in gruppi di venticinque, quattro pagine contengono cento elementi e una quinta contiene quello restante. Quando il totale degli elementi è zero, anche le pagine totali sono zero, perché non esiste alcuna pagina di risultati. La pagina richiesta non viene limitata automaticamente a quel totale. Una richiesta per la pagina dieci può quindi produrre un offset valido anche se la raccolta ha soltanto tre pagine. È una scelta intenzionale: il calcolatore restituisce l’aritmetica della paginazione e lascia a Lei la politica applicativa. La Sua applicazione può confrontare la pagina richiesta con total_pages e restituire un risultato vuoto, reindirizzare all’ultima pagina o mostrare una risposta di risorsa non trovata. Separare calcolo e politica mantiene l’output prevedibile nei database, nei servizi REST e nelle interfacce.
Convalidi gli input prima di creare la query
page e page_size devono essere interi sicuri maggiori o uguali a uno. Uno zero o un valore negativo violerebbe la convenzione delle pagine basate su uno o produrrebbe un limite privo di significato; entrambe le condizioni generano quindi un errore di input non valido. total_items deve essere un intero sicuro maggiore o uguale a zero, poiché una raccolta non può avere una quantità negativa o frazionaria di record. Il controllo degli interi sicuri evita inoltre perdite silenziose di precisione in JavaScript quando vengono moltiplicati valori molto grandi. Se l’offset calcolato supera l’intervallo sicuro, la richiesta viene rifiutata invece di restituire un numero impreciso. Le stesse regole possono proteggere il confine di un’API, impedendo che parametri errati raggiungano l’adattatore del database. La capacità non effettua richieste di rete, non conserva dati e non usa valori casuali o dipendenti dal tempo. Lo stesso input produce sempre lo stesso output. Ogni richiesta automatizzata tramite API costa $0.002; può verificare gli esempi nel browser durante la progettazione o la risoluzione dei problemi.
Casi d'uso
Creare una query per il database
Converta una pagina scelta nell’interfaccia in valori LIMIT e OFFSET per una query SQL.
Mostrare i controlli di paginazione
Calcoli il totale necessario per abilitare, disabilitare o etichettare i controlli di navigazione.
Verificare i casi limite di un’API
Generi i valori attesi per raccolte vuote, ultime pagine parziali e pagine oltre i risultati.
Domande frequenti
Il numero di pagina è basato su zero o su uno?
È basato su uno: la pagina 1 ha offset 0 e la pagina 2 inizia dopo un page_size completo.
Come viene calcolato total_pages?
Il calcolatore divide total_items per page_size e arrotonda per eccesso, contando anche una pagina finale parziale.
Che cosa accade quando total_items è zero?
total_pages è 0, mentre offset e limit vengono comunque calcolati usando la pagina e la dimensione richieste.
Posso richiedere una pagina successiva a total_pages?
Sì. Il calcolatore restituisce l’offset matematico e la Sua applicazione decide se mostrare un risultato vuoto o rifiutare la pagina.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. Il calcolo è disponibile anche nel browser.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/dev/pagination-offset-calc \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"page":3,"page_size":25,"total_items":123}'const res = await fetch("https://api.kit.forhosting.com/dev/pagination-offset-calc", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"page": 3,
"page_size": 25,
"total_items": 123
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/pagination-offset-calc",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"page": 3,
"page_size": 25,
"total_items": 123
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/pagination-offset-calc", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"page":3,"page_size":25,"total_items":123}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"page":3,"page_size":25,"total_items":123}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/pagination-offset-calc", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"page": 3,
"page_size": 25,
"total_items": 123
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.pagination_offset_calc",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |