Menu
CoddyTech

Satu Bentuk error

Termasuk bagian REST API dalam perjalanan Node.js di Coddy. Pelajaran 8 dari 18.

API-mu sekarang mengembalikan error dalam dua bentuk: string untuk 404 dan object dari zod untuk 400. Client harus menangani masing-masing bentuk. Pilih satu bentuk untuk setiap error:

{ "error": { "code": "not_found", "message": "Invoice not found" } }

{ "error": { "code": "invalid_body", "message": "Too small: ...",
             "fields": { "amount": ["Too small: expected number to be >0"] } } }

code untuk program: nilainya tidak pernah berubah, jadi client bisa membandingkannya. message untuk manusia, dan susunan katanya bisa berubah. fields memberi tahu form input mana yang harus ditandai. Tulis bentuk ini dalam satu fungsi dan panggil dari setiap route agar bentuknya tetap konsisten:

sendError(res, 404, 'not_found', 'Invoice not found');
challenge icon

Tantangan

Mudah
  • Tulis sendError di errors.js: { "error": { "code", "message" } } dengan statusnya, serta fields hanya jika diberikan.
  • Gunakan fungsi ini untuk setiap 404 (kode not_found), sendInvalid untuk setiap body yang tidak valid, dan sendError di penangan error server.js (invalid_json, server_error).

Kirim DELETE /api/tasks/99, lalu lakukan POST dengan { "title": 123 }.

Coba sendiri

import { z } from 'zod';

// Mengirim setiap error dalam satu format:
// { "error": { "code": "not_found", "message": "Task not found" } }
// dengan "fields" ditambahkan hanya jika diberikan.
export const sendError = (res, status, code, message, fields) => {
    // Kirim jawabanmu di sini
};

// Error zod sebagai 400: masalah pertamanya sebagai pesan, masalah setiap field
// di fields.
export const sendInvalid = (res, zodError) =>
    sendError(res, 400, 'invalid_body', zodError.issues[0].message, z.flattenError(zodError).fieldErrors);
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di REST API

Latihan sendiri: Playground Express