أنواع معالجات الموجّه و Request/Response
حدّد أنواع معالجات مسارات Express: المعاملات والاستعلامات وأجسام JSON، وأرسل استجابات ذات أنواع باستخدام res.json و DTOs قابلة لإعادة الاستخدام.
أنواع معالجات الموجّه و Request/Response درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 3 دروس في المجموع.
مقدمة
الهدف: إعداد Express API صغيرة بأنواع صارمة. ستحدد أنواع params وquery وJSON bodies للمسارات، ثم تعيد JSON ذا نوع محدد باستخدام res.json.
- واجهات DTO
Request<P, Res, Body, Q>res.jsonذو نوع محدد
إعداد الخادم
هيّئ Express ومكّن تحليل JSON. اجعل نقطة نهاية فحص الصحة صغيرة وحدّد أنواعها باستخدام Request/Response.
import express, { Request, Response } from "express"
const app = express()
app.use(express.json())
app.get("/", (_req: Request, res: Response) => {
res.type("text/plain").send("OK")
})
app.listen(3000, () => console.log("http://localhost:3000"))المعاملات والاستعلام
حدّد نوع كل خانة صراحةً: Params وQuery وResBody. يساعد الإكمال التلقائي على تجنّب الأخطاء الإملائية.
import { Request, Response } from "express"
type Params = { id: string }
type Query = { verbose?: "1" | "0" }
type ResBody = { id: string; name: string; details?: string }
export function getUser(req: Request<Params, ResBody, unknown, Query>, res: Response<ResBody>) {
const { id } = req.params
const { verbose } = req.query
const body: ResBody = { id, name: "Ada", details: verbose === "1" ? "Loves math" : undefined }
return res.status(200).json(body)
}الجسم وres بأنواع محددة
حدّد نوع body لطلبات POST/PUT، بالإضافة إلى response ذي نوع محدد. وتعمل DTOs الخاصة بك أيضًا بوصفها توثيقًا.
import { Request, Response } from "express"
type CreateUserBody = { name: string }
type CreateUserRes = { id: string; name: string }
export function createUser(req: Request<{}, CreateUserRes, CreateUserBody>, res: Response<CreateUserRes>) {
const { name } = req.body
const result: CreateUserRes = { id: "u_1", name }
return res.status(201).json(result)
}توصيل المسارات
ركّب معالجات صغيرة ذات أنواع محددة. وتُتحقَّق معاملات المسار من خلال مطابقة القالب (مثل :id).
import express from "express"
import { getUser } from "./getUser"
import { createUser } from "./createUser"
const app = express()
app.use(express.json())
app.get("/users/:id", getUser)
app.post("/users", createUser)
app.listen(3000, () => console.log("http://localhost:3000"))نصائح
نصائح:
- اجعل DTOs صغيرة وأعد استخدامها عبر المعالجات.
- فضّل القيم الحرفية لاتحاد الأنواع لقيم الاستعلام المقيّدة.
- أعد رموز حالة دقيقة وJSON ذا نوع محدد.
التحقق من أنواع Express
تحقق سريع: كيف تحدد نوع معالج Express الذي يحتوي على معاملات وجسم JSON؟
مراجعة
مراجعة: حدّدت أنواع معاملات المسارات والاستعلامات والأجسام والاستجابات. ويمكن توسيع النمط نفسه ليشمل الموجّهات والبرمجيات الوسيطة.
الأسئلة الشائعة
هل درس «أنواع معالجات الموجّه و Request/Response» مجاني؟
نعم — نص درس «أنواع معالجات الموجّه و Request/Response» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 3 دروس في المجموع.
ماذا ستتعلم في «أنواع معالجات الموجّه و Request/Response»؟
حدّد أنواع معالجات مسارات Express: المعاملات والاستعلامات وأجسام JSON، وأرسل استجابات ذات أنواع باستخدام res.json و DTOs قابلة لإعادة الاستخدام. تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟
لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.
كم من الوقت يستغرق درس «أنواع معالجات الموجّه و Request/Response»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟
نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أنواع معالجات الموجّه و Request/Response
- التحقق من المخططات باستخدام zod والاستنتاج إلى TS
- البرمجيات الوسيطة للأخطاء وأنواع Result