Files
football-next/SWAGGER-FA.md
2026-05-03 17:01:46 +03:30

3.1 KiB
Raw Permalink Blame History

راهنمای فارسی Swagger پروژه

این پروژه حالا یک مستندات Swagger/OpenAPI داخلی دارد که از APIهای فعلی کد تولید شده است.

مسیرها

  • رابط Swagger UI: /swagger
  • خروجی خام OpenAPI JSON: /api/openapi

کاربرد هر مسیر

  • /swagger برای مشاهده، جستجو و تست Endpointها در مرورگر است.
  • /api/openapi برای اتصال ابزارهای دیگر مثل Postman Import، Redoc، یا CI/CD مناسب است.

نحوه استفاده

  1. پروژه را اجرا کنید.
  2. در مرورگر به /swagger بروید.
  3. از روی Tagها Endpoint مورد نظر را باز کنید.
  4. در صورت نیاز روی Try it out بزنید و ورودی را پر کنید.
  5. برای Endpointهای نیازمند احراز هویت، بهتر است ابتدا در همان مرورگر داخل برنامه لاگین کرده باشید.

احراز هویت

این پروژه از NextAuth با Session Cookie استفاده می‌کند.

  • بیشتر APIهای کاربری با Session کار می‌کنند.
  • APIهای ادمین علاوه بر Session، نقش ADMIN هم می‌خواهند.
  • در Swagger نیازی به Bearer Token نیست، چون درخواست‌ها روی همان Origin اجرا می‌شوند و Cookie مرورگر قابل استفاده است.

دسته‌بندی Endpointها

  • Auth: ثبت‌نام، Session و مسیرهای پایه NextAuth
  • User: پروفایل و تست Session
  • Team: ساخت و مدیریت تیم فانتزی
  • Players: دریافت و مدیریت بازیکنان
  • Countries: دریافت و مدیریت کشورها
  • Matches: بازی‌ها، آمار، رویدادها و محاسبه امتیاز
  • Rounds و Gameweeks: مدیریت بازه‌های مسابقات
  • Quiz: کوئیز روزانه، نتایج و قرعه‌کشی
  • Golden Cards: کارت‌های طلایی
  • Payment: ساخت و تایید پرداخت
  • Upload: آپلود عکس بازیکن

نکات مهم

  • مسیر /api/payment/verify پاسخ JSON نمی‌دهد و کاربر را Redirect می‌کند.
  • مسیر /api/upload/player-image از multipart/form-data استفاده می‌کند.
  • برخی مسیرها مثل POST /api/admin/matches/{id}/calc-points از داده‌های ثبت‌شده قبلی استفاده می‌کنند و بدنه ورودی ندارند.
  • مستندات بر اساس Routeهای فعلی پروژه نوشته شده؛ اگر API جدید اضافه شود باید lib/openapi.ts هم به‌روزرسانی شود.

نگهداری مستندات

فایل اصلی مستندات:

  • lib/openapi.ts

Routeهای خروجی:

  • app/api/openapi/route.ts
  • app/swagger/route.ts

اگر API جدیدی اضافه کردید:

  1. مسیر جدید را در paths اضافه کنید.
  2. در صورت نیاز Schema مشترک را در components.schemas تعریف کنید.
  3. اگر Endpoint نیازمند Session است، از Security فعلی استفاده کنید.