Skip to main content
#P1748

POST /v2/flights/routes/min_price

N. Flight Route Min Price (Cache)

این اندپوینت برای دریافت حداقل قیمت پرواز در یک مسیر خاص (مبدا و مقصد) استفاده می‌شود. داده‌های این سرویس مستقیماً از Redis Cache خوانده می‌شوند و دو حالت عملکرد دارد: دریافت قیمت برای یک تاریخ خاص، یا دریافت لیست تمام قیمت‌های موجود (Calendar View) برای آن مسیر.

Request Overview

URL: /v2/flights/routes/min_price
Method: POST
Controller: V2BaseController@getRouteFlightsMinPrice
Storage: Redis (Read-Only)
Middleware: authWithJwt

Access Control

  • نیاز به توکن احراز هویت (JWT) دارد.
  • این سرویس بسیار سریع است زیرا هیچ درخواستی به تامین‌کنندگان خارجی ارسال نمی‌کند و فقط با ردیس در ارتباط است.

Request Body Parameters

Field Type Description
origin string (الزامی) کد IATA فرودگاه مبدا (مثلاً MHD).
destination string (الزامی) کد IATA فرودگاه مقصد (مثلاً THR).
date string (اختیاری) تاریخ پرواز (فرمت YYYY-MM-DD). اگر ارسال شود، فقط قیمت همان روز برگردانده می‌شود. اگر ارسال نشود، لیست تمام تاریخ‌های موجود بازگردانده می‌شود.

Logic Details

منطق کنترلر بر اساس وجود یا عدم وجود پارامتر date به دو شاخه تقسیم می‌شود:

  1. حالت تک تاریخ (Specific Date):
    • کلید ردیس به صورت مستقیم ساخته می‌شود: min_price:flights:{origin}:{destination}:{date}.
    • اگر کلید موجود باشد، مقدار آن (قیمت) در قالب آبجکت payload بازگردانده می‌شود.
    • اگر موجود نباشد، پاسخ JSON با خطای داخلی code: 404 بازگردانده می‌شود.
  2. حالت کلی (Calendar View):
    • اگر پارامتر date ارسال نشود، سیستم تمام کلیدهای منطبق با الگوی min_price:flights:{origin}:{destination}:* را جستجو می‌کند.
    • مدیریت پیشوند ردیس: کد به طور هوشمند Prefix اتصال ردیس را دریافت کرده و هنگام پردازش کلیدها، آن را حذف می‌کند (str_replace) تا به نام کلید خالص برسد.
    • تاریخ از بخش پنجم کلید (اینکس 4 در explode) استخراج شده و به همراه قیمت در آرایه items قرار می‌گیرد.

Response Structure

حالت ۱: پاسخ موفق (تاریخ مشخص)

{
    "payload": {
        "origin": "MHD",
        "destination": "THR",
        "date": "2025-12-10",
        "min_price": 1500000
    },
    "meta": {
        "timestamp": 1733739000
    }
}

حالت ۲: پاسخ موفق (لیست کلی)

{
    "items": [
        {
            "origin": "MHD",
            "destination": "THR",
            "date": "2025-12-10",
            "min_price": 1500000
        },
        {
            "origin": "MHD",
            "destination": "THR",
            "date": "2025-12-11",
            "min_price": 1450000
        }
    ],
    "meta": {
        "timestamp": 1733739000
    }
}

پاسخ خطا (یافت نشد)

فقط در حالت "تک تاریخ" رخ می‌دهد:

{
    "error": {
        "code": 404,
        "message": "not found."
    },
    "meta": {
        "timestamp": 1733739000
    }
}

Flowchart

Start Request (POST)
Is 'date' provided?
↙ (Yes)
Redis::get(Specific Key)
Found?
No
Return 404 Error
Yes
Return Single Payload
↘ (No)
Redis::keys(Pattern *)
Loop Keys:
1. Remove Prefix
2. Extract Date
3. Get Price
Return Items List