#P1748
POST /v2/flights/routes/min_price
N. Flight Route Min Price (Cache)
این اندپوینت برای دریافت حداقل قیمت پرواز در یک مسیر خاص (مبدا و مقصد) استفاده میشود. دادههای این سرویس مستقیماً از Redis Cache خوانده میشوند و دو حالت عملکرد دارد: دریافت قیمت برای یک تاریخ خاص، یا دریافت لیست تمام قیمتهای موجود (Calendar View) برای آن مسیر.
Request Overview
URL:
/v2/flights/routes/min_priceMethod: 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 به دو شاخه تقسیم میشود:
- حالت تک تاریخ (Specific Date):
- کلید ردیس به صورت مستقیم ساخته میشود:
min_price:flights:{origin}:{destination}:{date}. - اگر کلید موجود باشد، مقدار آن (قیمت) در قالب آبجکت
payloadبازگردانده میشود. - اگر موجود نباشد، پاسخ JSON با خطای داخلی
code: 404بازگردانده میشود.
- کلید ردیس به صورت مستقیم ساخته میشود:
- حالت کلی (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
1. Remove Prefix
2. Extract Date
3. Get Price
↓
Return Items List