Edge computing med Cloudflare Workers og Deno · Lektion

Validering og fejlhåndtering

Validér indkommende request-data, og returnér ensartede, velstrukturerede fejlresponses i serverless-API'er bygget med Workers og Deno.

Lektion 3 af 313 trin

Validering og fejlhåndtering er en gratis Edge computing med Cloudflare Workers og Deno-lektion på CoddyKit. Dette er lektion 3 af 3. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Edge computing med Cloudflare Workers og Deno, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Edge computing med Cloudflare Workers og Deno-kurset indeholder 3 lektioner i alt.

Hvorfor skal input valideres?

Stol aldrig på input fra klienten. En robust API validerer alle indgående nyttedata, før den handler på dem.

Validering forhindrer:

  • At ødelagte data kommer ind i dit datalager
  • Nedbrud på grund af manglende felter
  • Sikkerhedsproblemer som injektion

Ved edge-miljøet fejler validering også hurtigt, hvilket sparer CPU og efterfølgende kald.

Analyse af anmodningens brødtekst

De fleste API'er accepterer JSON. Analysér det sikkert, for forkert formateret JSON udløser en fejl.

async function readJson(request) {
  try {
    return await request.json();
  } catch {
    return null;
  }
}

Manuel validering af felter

Ved simple skemaer kan du validere manuelt.

Kontrollér de obligatoriske felter og typerne, før du 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;
}

Skemavalidering med Zod

Til større API'er er et skemabibliotek som Zod (der kører på både Workers og Deno) mere overskueligt og giver typet output.

import { z } from 'zod';

const UserSchema = z.object({
  name: z.string().min(1),
  age: z.number().int().positive()
});

safeParse til kontrollerede fejl

Brug safeParse, så valideringen aldrig udløser en fejl. Undersøg i stedet resultatet.

const result = UserSchema.safeParse(body);
if (!result.success) {
  // result.error.issues describes what failed
}

Ensartet format for fejl-svar

Returnér fejl i et forudsigeligt JSON-format, så klienter kan fortolke dem pålideligt.

function errorResponse(message, status, details) {
  return new Response(
    JSON.stringify({ error: message, details: details || null }),
    { status, headers: { 'Content-Type': 'application/json' } }
  );
}

Valg af den rigtige statuskode

Tilpas HTTP-statussen til fejltypen:

  • 400 Bad Request, ugyldig brødtekst
  • 401 Unauthorized, manglende godkendelse
  • 404 Not Found
  • 422 Unprocessable Entity, semantisk valideringsfejl
  • 500 Internal Server Error, uventet fejl

Et sikkerhedsnet med try/catch

Pak handlere ind i try/catch, så en uventet fejl bliver til et rent 500-svar i stedet for et nedbrud.

export default {
  async fetch(request, env) {
    try {
      return await handle(request, env);
    } catch (err) {
      return errorResponse('Internal Server Error', 500);
    }
  }
};

Validering af forespørgsels- og sti-parametre

Brødteksten er ikke det eneste input, du ikke kan stole på. Forespørgselsstrenge og sti-parametre skal også kontrolleres.

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);
}

Undgå at lække interne detaljer

I produktion må du aldrig sende stack-traces eller rå fejlbeskeder til klienter.

Log hele fejlen internt, og returnér en generisk besked eksternt.

catch (err) {
  console.error(err);
  return errorResponse('Something went wrong', 500);
}

Opsummering af bedste praksis

Solid validering og fejlhåndtering betyder:

  • Validér brødtekst, forespørgsler og parametre
  • Brug et skemabibliotek til komplekst input
  • Returnér et ensartet fejlfomat
  • Vælg de korrekte statuskoder
  • Fang alt, og skjul interne detaljer

Hurtigt tjek

Hvilken HTTP-status passer bedst til en anmodning, hvis JSON er korrekt formateret, men ikke består en forretningsmæssig valideringsregel?

Opsummering

Du validerer nu input, du ikke kan stole på, og returnerer rene fejl:

  • Analysér brødtekst og parametre sikkert
  • Validér manuelt eller med Zods safeParse
  • Brug et ensartet JSON-format for fejl og korrekte statuskoder
  • Pak handlere ind i try/catch, og skjul interne detaljer

Pålidelig validering er det, der adskiller en prøve-API fra en API, der er klar til produktion.

Gratis at komme i gang

Lær Edge computing med Cloudflare Workers og Deno med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
47

Ofte stillede spørgsmål

Er lektionen “Validering og fejlhåndtering” gratis?

Ja — hele teksten til “Validering og fejlhåndtering” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Edge computing med Cloudflare Workers og Deno-kurset, skal du opgradere til CoddyKit PRO. Edge computing med Cloudflare Workers og Deno-kurset indeholder 3 lektioner i alt.

Hvad lærer jeg i “Validering og fejlhåndtering”?

Validér indkommende request-data, og returnér ensartede, velstrukturerede fejlresponses i serverless-API'er bygget med Workers og Deno. Du øver dig i Edge computing med Cloudflare Workers og Deno med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Edge computing med Cloudflare Workers og Deno?

Der kræves ingen tidligere erfaring. Edge computing med Cloudflare Workers og Deno på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 3.

Hvor lang tid tager lektionen “Validering og fejlhåndtering”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Edge computing med Cloudflare Workers og Deno-lektion?

Ja. Alle Edge computing med Cloudflare Workers og Deno-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Design af RESTful API'er
  2. Routing og middleware
  3. Validering og fejlhåndtering
← Tilbage til Edge computing med Cloudflare Workers og Deno