Edge computing med Cloudflare Workers och Deno · Lektion

Validering och felhantering

Validera inkommande requestdata och returnera konsekventa, välstrukturerade felsvar i serverless-API:er byggda med Workers och Deno.

Lektion 3 av 313 steg

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:

  • 400 Bad Request, ogiltig body
  • 401 Unauthorized, autentisering saknas
  • 404 Not Found
  • 422 Unprocessable Entity, semantiskt valideringsfel
  • 500 Internal 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.

Gratis att börja

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

  1. Utforma RESTful API:er
  2. Routing och middleware
  3. Validering och felhantering
← Tillbaka till Edge computing med Cloudflare Workers och Deno