API-paginering, filtrering och sortering
Få er SaaS-API att skala genom att returnera stora datamängder sida för sida, låta klienter filtrera och sortera resultat och exponera konsekventa frågeparametrar.
API-paginering, filtrering och sortering är en gratis lektion i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning innehåller totalt 4 lektioner.
Varför inte returnera allt?
En endpoint som returnerar 50 000 rader är långsam, tung och kan få klienter att krascha. Paginering returnerar data i hanterbara delar, medan filtrering och sortering låter klienterna efterfråga exakt det de behöver.
Offsetpaginering
Det enklaste tillvägagångssättet använder page och limit. Ni hoppar över (page - 1) * limit rader och hämtar limit rader.
GET /api/users?page=2&limit=20Implementera offset i Prisma
Prisma tillhandahåller skip och take för offsetpaginering.
const users = await prisma.user.findMany({
skip: (page - 1) * limit,
take: limit
});Returnera metadata
Klienter behöver veta hur många sidor som finns. Returnera datan tillsammans med ett totalt antal och beräknad sidinformation.
const total = await prisma.user.count();
return Response.json({
data: users,
page,
totalPages: Math.ceil(total / limit)
});Problemet med offset
Stora offsetvärden är långsamma eftersom databasen fortfarande genomsöker de överhoppade raderna, och infogningar kan flytta objekt mellan sidor. För stora eller föränderliga datamängder bör ni föredra markörpaginering.
Markörpaginering
En markör pekar på det senast visade objektet. Nästa begäran hämtar rader efter markören – snabbt och stabilt även när data förändras.
const users = await prisma.user.findMany({
take: limit,
skip: 1,
cursor: { id: lastId },
orderBy: { id: 'asc' }
});Filtrera med frågeparametrar
Läs filterparametrar från URL:en och bygg en where-sats. Använd contains för sökliknande filter.
const q = searchParams.get('search');
const where = q ? { name: { contains: q, mode: 'insensitive' } } : {};Kombinera flera filter
Bygg where-objektet villkorligt, så att endast angivna parametrar används. Prisma kombinerar dem med AND som standard.
const where = {};
if (status) where.status = status;
if (minPrice) where.price = { gte: Number(minPrice) };Säker sortering
Acceptera ett sorteringsfält och en riktning, men vitlista tillåtna fält så att klienter inte kan sortera efter godtyckliga eller känsliga kolumner.
const allowed = ['name', 'createdAt', 'price'];
const field = allowed.includes(sort) ? sort : 'createdAt';
const orderBy = { [field]: dir === 'desc' ? 'desc' : 'asc' };Validera frågeparametrar
Konvertera och begränsa indata: sätt ett tak för limit så att en klient inte kan begära en miljon rader, och ange standardvärdet 1 för page.
const limit = Math.min(Number(searchParams.get('limit')) || 20, 100);
const page = Math.max(Number(searchParams.get('page')) || 1, 1);Bästa praxis
Utforma skalbara list-endpoints:
- Använd alltid paginering för stora samlingar
- Använd markörpaginering för stora eller föränderliga datamängder
- Returnera metadata (totalt antal, sidor)
- Vitlista sorteringsfält och begränsa gränsvärden
Snabb kontroll
Testa era kunskaper om paginering.
Sammanfattning
Ni har lärt er att bygga skalbara list-API:er:
- Använd paginering med
skip/takeeller markörer - Returnera totalt antal och sidmetadata
- Bygg dynamiska
where-satser för filtrering - Vitlista sorteringsfält och begränsa
limit
Ert API hanterar nu stora datamängder effektivt.
Lär dig AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”API-paginering, filtrering och sortering” gratis?
Ja – hela texten till ”API-paginering, filtrering och sortering” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning, kan Ni uppgradera till CoddyKit PRO. Kursen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning innehåller totalt 4 lektioner.
Vad lär jag mig i ”API-paginering, filtrering och sortering”?
Få er SaaS-API att skala genom att returnera stora datamängder sida för sida, låta klienter filtrera och sortera resultat och exponera konsekventa frågeparametrar. Ni övar på AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning?
Du behöver inga förkunskaper. Utbildningen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”API-paginering, filtrering och sortering”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning-lektionen?
Ja. Varje AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Principer för RESTful API-design
- Databasschema och ORM
- De första API-endpointsen
- API-paginering, filtrering och sortering