Menu
CoddyTech

İsteğe Bağlı Alanlar

Coddy'nin Node.js Journey'sinin REST API'leri bölümünün bir parçası. Ders 9 / 25.

Tam bir görev için başlık ve tamamlandı değeri gerekir. Bir PATCH isteği bunlardan yalnızca birini değiştirebilir. Bir nesne şemasında .partial() çağırmak, mevcut alanlara ilişkin kuralları korurken alanlarını isteğe bağlı hâle getirir.

const ChangeBook = Book.partial();
ChangeBook.safeParse({year: 2000});

Atlanan başlığa izin verilir, ancak sağlanan bir yıl yine de sayı olmalıdır. Partial, hatalı değerleri geçerli hâle getirmez. Özgün şema değişmeden kalır; bu nedenle bir kaynağın tamamını değiştiren bir rota tüm alanları zorunlu tutmaya devam edebilir.

Book.partial({ pages: true }) yalnızca pages alanını isteğe bağlı hâle getirir; diğer alanlar zorunlu kalır. Oluşturma isteğinde genellikle varsayılan değeri olan bir alan atlanırken ana başlık yine de zorunlu tutulur. Ayrıştırma işleminden sonra const { pages = 1 } = result.data, alan atlandığında 1 değerini sağlar.

challenge icon

Görev

Kolay

exercise.js dosyasındaki iki şema atamasını düzenle. Task değerini tam kayıt olarak bırak. ChangeTask değerinin PATCH için alanların atlanmasını kabul etmesini sağla. NewTask değerinin bir başlık gerektirmesini, ancak done alanının atlanmasına izin vermesini sağla.

/result adresine POST yöntemiyle {} gönder: {"change":true,"create":false} sonucunu bekle. {"title":"Read"} gövdesi her iki denetimden de geçer. Gönderilen değerlerin yine de doğru türde olması gerekir: {"done":"false"} her iki denetimden de geçemez.

İlk GET /result isteğinde verilen {} örneği kullanılır. Diğer girdileri denemek için JSON gövdesiyle POST /result kullan.

Kendin dene

import { z } from 'zod';
const Task = z.object({ title: z.string(), done: z.boolean() });
const ChangeTask = Task;
const NewTask = Task;
export function exercise(body) {
    return { change: ChangeTask.safeParse(body).success, create: NewTask.safeParse(body).success };
}

REST API'leri bölümündeki tüm dersler

Kendi başına pratik yap: Express playground