0Pricing
TypeScript Academy · Ders

Savunmacı ayrıştırma ve hata zarfları

Sağlam istek işleme oluşturun: verileri savunmacı biçimde ayrıştırın, tüm başarısızlıkları kısa bir JSON hata zarfına eşleyin ve iç ayrıntıların sızmasını önleyin.

Savunmacı ayrıştırma ve hata zarfları, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 2 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 2 dersten oluşur.

Giriş

Amaç: Savunmacı biçimde ayrıştırmak ve her zaman öngörülebilir bir JSON hata zarfıyla yanıt vermek. Doğrulamayı sınıra yakın tutacak, başarısızlıkları standartlaştıracak ve yanıtları asgari düzeyde tutarken günlükleri ayrıntılı bırakacağız.

  • Güvenilmeyen tüm girdilerde safeParse
  • Tutarlı { hata, kod, ayrıntılar? }
  • 4xx ve 5xx ayrımı

Zarf eşleyicisi

Küçük ve yeniden kullanılabilir bir ErrorEnvelope tanımlayın. Yığın izlerini açığa çıkarmadan unknown hatalarını buna eşleyin.

export type ErrorEnvelope = { error: string; code?: string; details?: unknown }

export function toEnvelope(u: unknown): ErrorEnvelope {
  if (u instanceof Error) return { error: u.message }
  if (typeof u === "string") return { error: u }
  try { return { error: JSON.stringify(u) } } catch { return { error: "Unknown error" } }
}

Doğrulama yardımcısı

Şemaları, ayrımlı bir sonuç döndüren validate yardımcısıyla sarın. İşleyiciler küçük ve tutarlı kalır.

import { z, type ZodTypeAny } from "zod"

export function validate<T extends ZodTypeAny>(schema: T, value: unknown) {
  const r = schema.safeParse(value)
  if (!r.success) {
    return { ok: false as const, issues: r.error.format() }
  }
  return { ok: true as const, data: r.data as z.infer<T> }
}

Savunmacı işleyici

Erken doğrulayın; sorun ayrıntılarıyla birlikte 400 döndürün. Beklenmeyen başarısızlıkları, zarf içeren bir 500 yanıtı vermesi için hata ara yazılımına aktarın.

import type { Request, Response, NextFunction } from "express"
import { z } from "zod"
import { validate } from "./validate"
import { toEnvelope, type ErrorEnvelope } from "./envelope"

const bodySchema = z.object({ email: z.string().email(), newsletter: z.boolean().default(false) })

export function subscribe(req: Request, res: Response<{ ok: true } | ErrorEnvelope>, next: NextFunction) {
  const r = validate(bodySchema, req.body)
  if (!r.ok) return res.status(400).json({ error: "Invalid body", details: r.issues })
  try {
    // pretend to persist
    return res.status(201).json({ ok: true })
  } catch (e) {
    return next(e)
  }
}

export function errorMiddleware(err: unknown, _req: Request, res: Response<ErrorEnvelope>, _next: NextFunction) {
  const env = toEnvelope(err)
  res.status(500).json(env)
}

Yaygın zarflar

Yaygın sonuçlar için küçük yardımcılar sağlayın: istemcilerin güvenilir biçimde dallanabilmesi için kararlı code dizeleriyle birlikte 404/401.

export function notFound(resource: string): { status: 404; body: { error: string; code: string } } {
  return { status: 404, body: { error: `${resource} not found`, code: "NOT_FOUND" } }
}

export function unauthorized(): { status: 401; body: { error: string; code: string } } {
  return { status: 401, body: { error: "unauthorized", code: "UNAUTHORIZED" } }
}

Günlükler ve yanıt karşılaştırması

Günlüklerle yanıtı dengeleyin: tam hatayı sunucu tarafında (yığın, istek kimliği, kullanıcı kimliği) günlüğe kaydedin; ancak istemciye asgari bir zarf döndürün. PII için hız sınırlarını ve hassas bilgileri temizlemeyi değerlendirin.

Zarf uygulaması denetimi

Hızlı denetim: Doğrulama hataları nasıl döndürülmelidir?

Özet

Özet: Girdileri safeParse ile doğrulayın, başarısızlıkları özlü bir zarfa eşleyin ve ayrıntılı günlükleri asgari istemci yanıtlarından ayırın.

Sıkça Sorulan Sorular

“Savunmacı ayrıştırma ve hata zarfları” dersi ücretsiz mi?

Evet — “Savunmacı ayrıştırma ve hata zarfları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 2 dersten oluşur.

“Savunmacı ayrıştırma ve hata zarfları” dersinde ne öğreneceğim?

Sağlam istek işleme oluşturun: verileri savunmacı biçimde ayrıştırın, tüm başarısızlıkları kısa bir JSON hata zarfına eşleyin ve iç ayrıntıların sızmasını önleyin. TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 2 dersinin 2. dersidir.

“Savunmacı ayrıştırma ve hata zarfları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. zod/valibot şemaları ve çıkarım
  2. Savunmacı ayrıştırma ve hata zarfları
← TypeScript Academy Sayfasına Dön