API
بلاک api یک سطح مدیریتی gRPC را عرضه میکند که به ابزارهای بیرونی (xray api ...، داشبوردهای رصدپذیری، کلاینتهای قاعدهٔ پویا) اجازه میدهد با یک نمونهٔ در حال اجرای Xray صحبت کنند. این بلاک یک ورودی داخلی را پیکربندی میکند که موتور مسیریابی سپس باید به آن مسیر دهد — معمولاً از طریق یک قاعدهٔ inboundTag.
گزینهها
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
tag | string | (required) | <inbound tag> | تگ مورد استفاده برای عرضهٔ ورودی API به موتور مسیریابی. یک مقدار ناتهی الزامی است؛ تگ خالی هنگام تجزیه رد میشود. |
listen | string | 127.0.0.1:0 | <host:port> | آدرسی که API gRPC روی آن گوش میدهد. اگر تنظیم نشود، به جای یک شنوندهٔ TCP، یک ورودی داخلی درونفرایندی ثبت میشود. |
services | []string | [] | HandlerService | LoggerService | StatsService | ObservatoryService | RoutingService | ReflectionService | فهرست سرویسهای API برای عرضه. مطابقت بدون توجه به بزرگی و کوچکی حروف انجام میشود؛ نامهای ناشناخته بهطور خاموش نادیده گرفته میشوند. |
منبع: infra/conf/api.go:16-20 · ثابتشده در v1.260327.0 (d2758a0)
سرویسهای مجاز
نامهای موجود در آرایهٔ services به ثبتهای سرویس gRPC در APIConfig.Build (infra/conf/api.go:28-43) نگاشت میشوند. این نگاشت نسبت به بزرگی و کوچکی حروف حساس نیست — "HandlerService"، "handlerservice" و "HANDLERSERVICE" همگی پذیرفته میشوند.
| سرویس | هدف |
|---|---|
HandlerService | افزودن/حذف ورودیها و خروجیها در زمان اجرا. |
LoggerService | بازگشایی فایلهای لاگ (مفید با logrotate). |
StatsService | خواندن شمارندههایی که هنگام فعال بودن stats منتشر میشوند. |
ObservatoryService | پرسوجوی آخرین نتایج رصدگر تأخیر. |
RoutingService | آزمودن تصمیمهای مسیریابی و بارگذاری مجدد قواعد. |
ReflectionService | بازتاب استاندارد gRPC تا کلاینتهای عمومی بتوانند درونبینی کنند. |
مثالها
یک نقطهانتهایی مدیریتی کمینه با شمارندههای آمار در دسترس:
json
{
"stats": {},
"api": {
"tag": "api",
"listen": "127.0.0.1:10085",
"services": ["HandlerService", "StatsService"]
},
"routing": {
"rules": [
{ "type": "field", "inboundTag": ["api"], "outboundTag": "api" }
]
}
}نکات
tagنمیتواند خالی باشد —Buildخطای"API tag can't be empty."را برمیگرداند (infra/conf/api.go:23-25).api.servicesرا با یک قاعدهٔ مسیریابی جفت کنید کهinboundTag: ["api"]را میگیرد و آن را به یک خروجی درونفرایندی با همان تگ ارسال میکند. بدون آن، API روی پورت شنوایی قابل دسترسی است اما موتور مسیریابی هیچ قاعدهای برای ترافیک ندارد.- برای جمعآوری به سبک Prometheus، بلاک
metricsرا ترجیح دهید — یک نقطهانتهایی HTTP ساده را بدون ماشینآلات gRPC عرضه میکند.
منبع: infra/conf/api.go:16-20 · v1.260327.0 (d2758a0)
