پرش به مطلب اصلی

میان‌افزار حل کننده مسیر (RoutingResolver)

میان‌افزار حل کننده مسیر مسئول یافتن و تطبیق مسیرهای درخواست با routeهای تعریف شده است.

هدف

این میان‌افزار مسیر درخواست را با routeهای تعریف شده در برنامه مقایسه کرده و route مناسب را پیدا می‌کند. همچنین پارامترهای مسیر را استخراج و تنظیم می‌کند.

نحوه کار

  1. نرمال‌سازی مسیر درخواست
  2. بارگذاری routeهای برنامه مورد نظر (API, Web)
  3. مقایسه مسیر با routeهای تعریف شده
  4. استخراج پارامترهای مسیر
  5. تنظیم اطلاعات route در درخواست

ساختار Route

interface HttpRoute {
path: string; // مسیر route
methods: string[]; // متدهای HTTP مجاز
method?: string; // متد HTTP (اختیاری)
apiVersion?: string; // نسخه API (پیش‌فرض: v1)
// ... سایر تنظیمات
}

تطبیق مسیر

پارامترهای مسیر

// تعریف route با پارامتر
{
path: "/users/{id:number}",
methods: ["get"]
}

// درخواست: /users/123
// نتیجه: params = { id: 123 }

پارامترهای اختیاری

// پارامتر اختیاری
{
path: "/users/{id:number?}",
methods: ["get"]
}

Wildcard

// تطبیق همه زیرمسیرها
{
path: "/files/*",
methods: ["get"]
}

نسخه API

برای درخواست‌های API، نسخه API از URL استخراج می‌شود:

/api/v1/users  -> apiVersion: "v1"
/api/v2/posts -> apiVersion: "v2"

خطاها

  • 404 Not found: مسیر یافت نشد
  • 404 Can not find matched route: هیچ route مناسبی یافت نشد

مثال استفاده

// تعریف route در برنامه
{
path: "/users/{id:number}/posts/{slug:string?}",
methods: ["get", "post"],
controller: "UserController",
action: "getPosts"
}

// درخواست: GET /api/v1/users/123/posts/my-post
// نتیجه:
// params = { id: 123, slug: "my-post" }
// routeInfo.index = 0 (ایندکس route)
// routeInfo.params = params