Validering och felhantering
Validera inkommande requestdata och returnera konsekventa, välstrukturerade felsvar i serverless-API:er byggda med Workers och Deno.
Validering och felhantering är en gratis lektion i Edge computing med Cloudflare Workers och Deno på CoddyKit. Detta är lektion 3 av 3. 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 Edge computing med Cloudflare Workers och Deno, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Edge computing med Cloudflare Workers och Deno innehåller totalt 3 lektioner.
Varför validera indata?
Lita aldrig på klientindata. Ett robust API validerar all inkommande nyttolast innan den behandlas.
Validering förhindrar:
- Att skadade data hamnar i ert datalager
- Krascher på grund av saknade fält
- Säkerhetsproblem som injektioner
På edge-nätverket gör valideringen dessutom att fel upptäcks snabbt, vilket sparar CPU och efterföljande anrop.
Parsa request body
De flesta API:er tar emot JSON. Parsa den säkert, eftersom felaktig JSON kastar ett fel.
async function readJson(request) {
try {
return await request.json();
} catch {
return null;
}
}Manuell fältvalidering
För enkla scheman kan ni validera manuellt.
Kontrollera obligatoriska fält och typer innan ni fortsätter.
function validateUser(body) {
const errors = [];
if (typeof body.name !== 'string') errors.push('name is required');
if (typeof body.age !== 'number') errors.push('age must be a number');
return errors;
}Schemavalidering med Zod
För större API:er är ett schemabibliotek som Zod (som körs på både Workers och Deno) renare och ger typad output.
import { z } from 'zod';
const UserSchema = z.object({
name: z.string().min(1),
age: z.number().int().positive()
});safeParse för hantering av fel
Använd safeParse så att valideringen aldrig kastar ett fel. Inspektera i stället resultatet.
const result = UserSchema.safeParse(body);
if (!result.success) {
// result.error.issues describes what failed
}Konsekvent format för felsvar
Returnera fel i ett förutsägbart JSON-format så att klienter kan tolka dem tillförlitligt.
function errorResponse(message, status, details) {
return new Response(
JSON.stringify({ error: message, details: details || null }),
{ status, headers: { 'Content-Type': 'application/json' } }
);
}Välj rätt statuskod
Anpassa HTTP-statusen efter typen av fel:
400Bad Request, ogiltig body401Unauthorized, autentisering saknas404Not Found422Unprocessable Entity, semantiskt valideringsfel500Internal Server Error, oväntat fel
Ett skyddsnät med try/catch
Omslut hanterare med try/catch så att ett oväntat fel blir ett korrekt 500-svar i stället för en krasch.
export default {
async fetch(request, env) {
try {
return await handle(request, env);
} catch (err) {
return errorResponse('Internal Server Error', 500);
}
}
};Validera query- och path-parametrar
Body är inte den enda opålitliga indatan. Även query-strängar och path-parametrar behöver kontrolleras.
const url = new URL(request.url);
const page = Number(url.searchParams.get('page') || '1');
if (!Number.isInteger(page) || page < 1) {
return errorResponse('Invalid page', 400);
}Undvik att läcka interna detaljer
I produktion ska ni aldrig skicka stack traces eller råa felmeddelanden till klienter.
Logga hela felet internt och returnera ett generiskt meddelande externt.
catch (err) {
console.error(err);
return errorResponse('Something went wrong', 500);
}Sammanfattning av bästa praxis
Stabil validering och felhantering innebär att ni:
- Validerar body, query och parametrar
- Använder ett schemabibliotek för komplex indata
- Returnerar ett konsekvent felformat
- Väljer korrekta statuskoder
- Fångar alla fel och döljer interna detaljer
Snabbtest
Vilken HTTP-status passar bäst för en begäran vars JSON är korrekt formaterad men inte uppfyller en regel för affärsvalidering?
Sammanfattning
Ni validerar nu opålitlig indata och returnerar tydliga fel:
- Parsa body och parametrar säkert
- Validera manuellt eller med Zods
safeParse - Använd ett konsekvent JSON-format för fel och korrekta statuskoder
- Omslut hanterare med try/catch och dölj interna detaljer
Tillförlitlig validering är det som skiljer ett leksaks-API från ett API för produktion.
Lär dig Edge computing med Cloudflare Workers och Deno 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
- 47
Vanliga frågor
Är lektionen ”Validering och felhantering” gratis?
Ja – hela texten till ”Validering och felhantering” 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 Edge computing med Cloudflare Workers och Deno, kan Ni uppgradera till CoddyKit PRO. Kursen i Edge computing med Cloudflare Workers och Deno innehåller totalt 3 lektioner.
Vad lär jag mig i ”Validering och felhantering”?
Validera inkommande requestdata och returnera konsekventa, välstrukturerade felsvar i serverless-API:er byggda med Workers och Deno. Ni övar på Edge computing med Cloudflare Workers och Deno 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 Edge computing med Cloudflare Workers och Deno?
Du behöver inga förkunskaper. Utbildningen i Edge computing med Cloudflare Workers och Deno 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 3 av 3.
Hur lång tid tar lektionen ”Validering och felhantering”?
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 Edge computing med Cloudflare Workers och Deno-lektionen?
Ja. Varje Edge computing med Cloudflare Workers och Deno-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
- Utforma RESTful API:er
- Routing och middleware
- Validering och felhantering