</>مدرسه زیب‌موجیاد بگیر، تمرین کن، بساز
مدرسهC#درس 8
درس 8 از 8 · ۱۲۰ دقیقه

پروژه نهایی C#؛ API سفارش قابل آزمون

مدل، service، repository، endpoint، اعتبارسنجی، تست و انتشار را در یک API کوچک اما کامل کنار هم می‌گذاری.

۰امتیاز شما
نقشه این درس

بعد از این درس چه کاری می‌توانی انجام بدهی؟

  • جریان ثبت سفارش را انتها‌به‌انتها طراحی کنی
  • مرزهای لایه‌ها را روشن نگه داری
  • برای مسیر موفق و خطا تست بنویسی
به زبان زندگی واقعی

C# را ساده بفهم

C# مثل یک کارگاه مهندسی با قراردادهای روشن است؛ نوع‌ها، کلاس‌ها و interfaceها کمک می‌کنند اجزای اپ، وب‌سرویس یا بازی جدا اما هماهنگ کار کنند.

نکته مهم برای شروع C#

status code بخشی از قرارداد محصول است؛ خطاهای دامنه را تصادفی به ۵۰۰ تبدیل نکن.

چرا مهم است؟ ورودی HTTP را به use case تبدیل می‌کند.

اولین تمرین تو: GET /orders/{id} را با پاسخ ۲۰۰ و ۴۰۴ طراحی و سپس یک integration test برای هر دو بنویس.

توضیح ساده و قدم‌به‌قدم

از یک مثال کوچک شروع کن

نسخه اول دو endpoint دارد: ثبت سفارش و دریافت با شناسه. DTO شبکه را از مدل دامنه جدا کن. validation، idempotency، وضعیت ناموجود و لغو عملیات را طراحی کن. تست واحد قانون و تست integration قرارداد HTTP را پوشش می‌دهد.

1

۱. قرارداد HTTP

ورودی، status و پاسخ خطا را پیش از کد مشخص کن.

2

۲. هسته قابل آزمون

OrderService بدون وابستگی به ASP.NET Core تست می‌شود.

3

۳. انتشار امن

تنظیمات محیط، health check، لاگ و migration را آماده کن.

نکته مهم

status code بخشی از قرارداد محصول است؛ خطاهای دامنه را تصادفی به ۵۰۰ تبدیل نکن.

مفهوم‌های اصلی

سه قطعه‌ای که باید بفهمی

Endpoint

ورودی HTTP را به use case تبدیل می‌کند.

Application service

قانون و جریان کاربرد را هماهنگ می‌کند.

Persistence boundary

داده را از طریق قرارداد ذخیره می‌کند.

سناریوی واقعی

ثبت سفارش و دریافت وضعیت

کاربر اقلام را می‌فرستد، API ورودی را بررسی می‌کند، موجودی و مبلغ را می‌سنجد و نتیجه امن و قابل پیگیری برمی‌گرداند.

ورودی روشنیک تغییر کوچکنتیجه قابل سنجش
بازی ساختن کد

قطعه‌ها را به ترتیب درست بچین

روی هر قطعه بزن تا وارد پاسخ شود؛ برای برگرداندن دوباره روی آن بزن. با دکمه‌های جابه‌جایی هم می‌توانی بدون کشیدن و رهاکردن ترتیب را اصلاح کنی.

مرحله ۲ از ۳ · مرتب‌کردن کد
بانک قطعه‌هاقطعه مناسب را انتخاب کن
ترتیب پاسخ تواز بالا به پایین اجرا می‌شود

    هنوز پاسخی بررسی نشده است.

    کارگاه تعاملی

    بررسی ساختار تمرین

    این صفحه کامپایلر کامل C# نیست؛ ساختار تمرین را صادقانه بررسی می‌کند و خروجی مورد انتظار را نشان می‌دهد. برای اجرای کامل به محیط رسمی همان زبان نیاز است.

    Program.cs
    خروجیآماده
    یک بخش را تغییر بده و دکمه بررسی را بزن.
    بعد از هر تغییر، نتیجه را دوباره بررسی کن.
    تمرین هدایت‌شده

    GET /orders/{id} را با پاسخ ۲۰۰ و ۴۰۴ طراحی و سپس یک integration test برای هر دو بنویس.

    دام‌های رایج

    این سه اشتباه را انجام نده

    1

    استفاده مستقیم DTO به‌عنوان مدل دامنه

    2

    پنهان‌کردن همه خطاها با ۲۰۰

    3

    قرار دادن connection string در مخزن عمومی

    سنجش چندمرحله‌ای

    با 5 سؤال مطمئن شو که مفهوم را گرفته‌ای

    سؤال 1 از 5

    برای ساخت موفق منبع چه پاسخ مناسبی است؟

    سؤال 2 از 5

    DTO شبکه چرا از مدل دامنه جداست؟

    سؤال 3 از 5

    connection string کجا باید باشد؟

    سؤال 4 از 5

    کدام روش نشان می‌دهد این درس را واقعاً فهمیده‌ای؟

    سؤال 5 از 5

    کدام رفتار احتمال خطا را در همین موضوع بیشتر می‌کند؟

    پایان درس 8

    فهمیدی، تغییر دادی، نتیجه را توضیح دادی؟

    فقط در این صورت درس را کامل کن و سراغ مرحله بعد برو.