Paginering, filtrering og sortering av API-er
Gjør SaaS-API-et skalerbart ved å returnere store datasett sidevis, la klienter filtrere og sortere resultater og eksponere konsistente spørringsparametere.
Paginering, filtrering og sortering av API-er er en gratis leksjon i KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling inneholder totalt 4 leksjoner.
Hvorfor ikke returnere alt?
Et endepunkt som returnerer 50 000 rader, er tregt og tungt og kan føre til at klienter krasjer. Sideinndeling returnerer data i håndterbare deler, mens filtrering og sortering lar klientene be om akkurat det de trenger.
Offset-sideinndeling
Den enkleste fremgangsmåten bruker page og limit. De første (page - 1) * limit radene hoppes over, og deretter hentes limit rader.
GET /api/users?page=2&limit=20Implementere offset i Prisma
Prisma tilbyr skip og take for offset-sideinndeling.
const users = await prisma.user.findMany({
skip: (page - 1) * limit,
take: limit
});Returnere metadata
Klientene må vite hvor mange sider som finnes. Returner dataene sammen med et totalt antall og beregnet sideinformasjon.
const total = await prisma.user.count();
return Response.json({
data: users,
page,
totalPages: Math.ceil(total / limit)
});Problemet med offset
Store offset-verdier er trege fordi databasen fortsatt skanner radene som hoppes over, og innsettinger kan flytte elementer mellom sider. For store eller dynamiske datasett bør De foretrekke cursor-sideinndeling.
Cursor-sideinndeling
En cursor peker på det sist viste elementet. Den neste forespørselen henter rader etter denne cursoren – raskt og stabilt selv når dataene endres.
const users = await prisma.user.findMany({
take: limit,
skip: 1,
cursor: { id: lastId },
orderBy: { id: 'asc' }
});Filtrere med spørringsparametere
Les filterparametere fra URL-en og bygg en where-betingelse. Bruk contains for søkelignende filtre.
const q = searchParams.get('search');
const where = q ? { name: { contains: q, mode: 'insensitive' } } : {};Kombinere flere filtre
Bygg where-objektet betinget, slik at bare parametere som er oppgitt, brukes. Prisma kombinerer dem som standard med AND.
const where = {};
if (status) where.status = status;
if (minPrice) where.price = { gte: Number(minPrice) };Sikker sortering
Godta et sorteringsfelt og en retning, men hvitlist tillatte felt slik at klientene ikke kan sortere etter vilkårlige eller sensitive kolonner.
const allowed = ['name', 'createdAt', 'price'];
const field = allowed.includes(sort) ? sort : 'createdAt';
const orderBy = { [field]: dir === 'desc' ? 'desc' : 'asc' };Validere spørringsparametere
Konverter og begrens inndata: sett en øvre grense for limit slik at en klient ikke kan be om én million rader, og bruk 1 som standardverdi for page.
const limit = Math.min(Number(searchParams.get('limit')) || 20, 100);
const page = Math.max(Number(searchParams.get('page')) || 1, 1);Beste praksis
Utform skalerbare listeendepunkter:
- Bruk alltid sideinndeling for store samlinger
- Bruk cursor-sideinndeling for store eller dynamiske data
- Returner metadata (totalt antall, sider)
- Hvitlist sorteringsfelt og begrens grenseverdier
Kort kontroll
Test kunnskapene Deres om sideinndeling.
Oppsummering
De har lært å bygge skalerbare liste-API-er:
- Bruk sideinndeling med
skip/takeeller cursors - Returner totalt antall og metadata om sider
- Bygg dynamiske
where-betingelser for filtrering - Hvitlist sorteringsfelt og begrens grenseverdien
API-et Deres håndterer nå store datasett effektivt.
Lær deg KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Paginering, filtrering og sortering av API-er» gratis?
Ja – hele teksten i «Paginering, filtrering og sortering av API-er» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling-kurset, kan du oppgradere til CoddyKit PRO. Kurset i KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling inneholder totalt 4 leksjoner.
Hva lærer jeg i «Paginering, filtrering og sortering av API-er»?
Gjør SaaS-API-et skalerbart ved å returnere store datasett sidevis, la klienter filtrere og sortere resultater og eksponere konsistente spørringsparametere. Du øver på KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling?
Ingen tidligere erfaring er nødvendig. KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Paginering, filtrering og sortering av API-er»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling-leksjonen?
Ja. Alle KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Prinsipper for RESTful API-design
- Databaseskjema og ORM
- De første API-endepunktene
- Paginering, filtrering og sortering av API-er