Edge computing med Cloudflare Workers og Deno · leksjon

Validering og feilhåndtering

Valider innkommende forespørselsdata og returner konsistente, velstrukturerte feilsvar i serverless-API-er bygget med Workers og Deno.

Leksjon 3 av 313 trinn

Validering og feilhåndtering er en gratis leksjon i Edge computing med Cloudflare Workers og Deno på CoddyKit. Dette er leksjon 3 av 3. 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 Edge computing med Cloudflare Workers og Deno, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Edge computing med Cloudflare Workers og Deno inneholder totalt 3 leksjoner.

Hvorfor validere inndata?

Stol aldri på inndata fra klienten. Et robust API validerer alle innkommende data før det gjør noe med dem.

Validering forhindrer:

  • At ødelagte data kommer inn i datalageret
  • Krasj på grunn av manglende felt
  • Sikkerhetsproblemer som injeksjon

På edge-miljøet stopper valideringen også tidlig, noe som sparer CPU og nedstrømskall.

Analysere forespørselskroppen

De fleste API-er godtar JSON. Analyser den på en trygg måte. Feilformatert JSON utløser et unntak.

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

Manuell feltvalidering

For enkle skjemaer kan De validere manuelt.

Kontroller obligatoriske felt og datatyper før De fortsetter.

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

Skjemavalidering med Zod

For større API-er er et skjemabibliotek som Zod (som kjører på både Workers og Deno) ryddigere og gir typede resultater.

import { z } from 'zod';

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

safeParse for håndtering av feil

Bruk safeParse slik at valideringen aldri utløser et unntak. Inspiser resultatet i stedet.

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

Enhetlig format for feilresponser

Returner feil i et forutsigbart JSON-format slik at klienter kan tolke dem på en pålitelig måte.

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

Velge riktig statuskode

Tilpass HTTP-statusen til feiltypen:

  • 400 Bad Request, ugyldig kropp
  • 401 Unauthorized, manglende autentisering
  • 404 Not Found
  • 422 Unprocessable Entity, semantisk valideringsfeil
  • 500 Internal Server Error, uventet feil

Et sikkerhetsnett med try/catch

Pakk inn handlere i try/catch slik at et uventet unntak blir til en ryddig 500-respons i stedet for en krasj.

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

Validere spørrings- og banelparametere

Brødteksten er ikke den eneste upålitelige inndataen. Spørringsstrenger og baneparametere må 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);
}

Unngå å lekke interne detaljer

I produksjon må De aldri sende stakkspor eller rå feilmeldinger til klienter.

Logg hele feilen internt, og returner en generell melding eksternt.

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

Oppsummering av anbefalte fremgangsmåter

God validering og feilhåndtering innebærer:

  • Validere kropp, spørring og parametere
  • Bruke et skjemabibliotek for komplekse inndata
  • Returnere et enhetlig feilformat
  • Velge riktige statuskoder
  • Fange opp alt og skjule interne detaljer

Kort kontroll

Hvilken HTTP-status passer best for en forespørsel der JSON-en er korrekt formatert, men ikke oppfyller en regel for forretningsvalidering?

Oppsummering

De validerer nå upålitelige inndata og returnerer ryddige feilmeldinger:

  • Analyser kropper og parametere på en trygg måte
  • Valider manuelt eller med Zods safeParse
  • Bruk et enhetlig JSON-format for feil og riktige statuskoder
  • Pakk inn handlere i try/catch, og skjul interne detaljer

Pålitelig validering er det som skiller et leketøy-API fra et API klart for produksjon.

Gratis å komme i gang

Lær deg Edge computing med Cloudflare Workers og Deno 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
47

Ofte stilte spørsmål

Er leksjonen «Validering og feilhåndtering» gratis?

Ja – hele teksten i «Validering og feilhåndtering» 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 Edge computing med Cloudflare Workers og Deno-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Edge computing med Cloudflare Workers og Deno inneholder totalt 3 leksjoner.

Hva lærer jeg i «Validering og feilhåndtering»?

Valider innkommende forespørselsdata og returner konsistente, velstrukturerte feilsvar i serverless-API-er bygget med Workers og Deno. Du øver på Edge computing med Cloudflare Workers og Deno 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 Edge computing med Cloudflare Workers og Deno?

Ingen tidligere erfaring er nødvendig. Edge computing med Cloudflare Workers og Deno 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 3 av 3.

Hvor lang tid tar leksjonen «Validering og feilhåndtering»?

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 Edge computing med Cloudflare Workers og Deno-leksjonen?

Ja. Alle Edge computing med Cloudflare Workers og Deno-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

  1. Utforming av RESTful API-er
  2. Ruting og middleware
  3. Validering og feilhåndtering
← Tilbake til Edge computing med Cloudflare Workers og Deno