الحقول الاختيارية
جزء من قسم واجهات REST API في رحلة Node.js على Coddy. الدرس 9 من 25.
تحتاج المهمة المكتملة إلى عنوان وقيمة تدل على إنجازها. قد يغيّر طلب PATCH واحدًا منهما فقط. يؤدي استدعاء .partial() على مخطط كائن إلى جعل حقوله اختيارية، مع الإبقاء على القواعد الخاصة بأي حقول موجودة.
const ChangeBook = Book.partial();
ChangeBook.safeParse({year: 2000});يُسمح بإغفال العنوان، لكن يجب أن تظل السنة المقدَّمة رقمًا. لا تحوّل الدالة Partial القيم غير الصحيحة إلى قيم صالحة. يظل المخطط الأصلي دون تغيير، لذا يمكن لمسار يستبدل موردًا مكتملًا أن يواصل اشتراط كل حقل.
يجعل Book.partial({ pages: true }) الحقل pages اختياريًا فقط؛ وتظل الحقول الأخرى مطلوبة. غالبًا ما يُغفل طلب الإنشاء حقلًا له قيمة افتراضية، مع الاستمرار في اشتراط العنوان الرئيسي. بعد التحليل، يوفّر const { pages = 1 } = result.data القيمة 1 إذا أُغفل الحقل.
التحدي
سهلعدّل إسنادي المخططين في exercise.js. أبقِ Task سجلًا كاملًا. اجعل ChangeTask يقبل الحقول المحذوفة لطلبات PATCH. اجعل NewTask يتطلب عنوانًا، مع السماح بحذف done.
أرسل POST مع {} إلى /result: توقّع {"change":true,"create":false}. ينجح كلا الفحصين عند إرسال جسم الطلب {"title":"Read"}. يجب أن تظل القيم المُرسلة من النوع الصحيح: تفشل الحالتان مع {"done":"false"}.
يستخدم GET /result الأولي المثال المُعطى {}. استخدم POST /result مع جسم طلب بتنسيق JSON لتجربة مدخلات أخرى.
جرّب بنفسك
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
1الموارد والأفعال
الموارد وعناوين URLالإنشاء باستخدام POST4المتصفحات والإصدارات والإعدادات
ما هو المصدرالسماح لمصدر آخرCORSصفحة تستدعي API2التحقق والأخطاء
التحقق من المدخلاتتدرّب بنفسك: Playground لـ Express