برنامه نویسی

قالب پاسخ بررسی سلامت برای APIهای HTTP – انجمن DEV

من به سفر خود برای آشنایی بیشتر با API های HTTP با خواندن مطالب مرتبط ادامه می دهم RFC ها. این بار، به پیشنهاد فرمت پاسخ بررسی سلامت برای APIهای HTTP را خواندم استفانو فاگو. در این پست، می‌خواهم مطالبم را خلاصه کنم.

توجه داشته باشید که یک پیش نویس است. علاوه بر این، نزدیک به دو سال است که غیرفعال بوده و بنابراین، به طور خودکار منقضی شده است. با این حال، این نزدیکترین به یک مشخصات در بررسی های بهداشتی است و بنابراین سزاوار عشق است.

تجسم داده های نمونه

با وجود اینکه زیاد خوانده نشده است، اما کمی «خشک» است. خوشبختانه، مشخصات یک نمونه JSON را ارائه می دهد. من آن را در PlantUML کپی کردم، و از قبل، یک نمایش بصری از آن را نشان می دهد:

بیایید نگاهی به ساختار پیشنهادی عنصر به عنصر داشته باشیم.

شی ریشه

در ساده ترین حالت، پاسخ یک شی JSON با یک اجباری است status ویژگی:

ساده ترین

ارزش ها می توانند:

  • pass برای وضعیت سالم مقدار نیز می تواند باشد ok (برای NodeJS) و up (برای Spring Boot) برای در نظر گرفتن کتابخانه های موجود بررسی سلامت. کد وضعیت HTTP باید در محدوده 2xx تا 3xx باشد.
  • warn برای وضعیت سالم اما با نگرانی با محدوده وضعیت HTTP یکسان.
  • fail برای نشان دادن وضعیت ناسالم مقادیر جایگزین ممکن عبارتند از error (NodeJS) و down (چکمه بهاره). کد وضعیت HTTP باید در محدوده 4xx تا 5xx باشد.

می توان اضافه کرد اختیاری ارزش های:

Root Object JSON

  • version: عمومی نسخه سرویس
  • releaseId: نسخه داخلی سرویس. به عنوان مثال version برای تغییرات ناسازگار افزایش می یابد، در حالی که releaseId می تواند هش commit یا یک نسخه معنایی باشد.
  • serviceId: شناسه منحصر به فرد سرویس
  • description: خود توضیحی
  • notes: آرایه ای از یادداشت های بدون ساختار
  • output: پیغام خطای ساده در صورت وجود pass یا warn. فیلد باید خالی بماند pass.

این links اشیاء

این links شی از جفت شی تشکیل شده است. مقادیر URI هستند، در حالی که کلیدها می توانند URI یا رایج/ثبت شده باشند: برای مقادیر مشترک به RFC5988 مراجعه کنید. به عنوان مثال، self.

پیوندها شیء JSON

این checks اشیاء

کلیدهای checks اشیاء از دو عبارت تشکیل شده اند که با دو نقطه، نام جزء و نام اندازه گیری از هم جدا شده اند. مورد دوم می تواند یکی از این موارد باشد:

  • یک مقدار از پیش تعریف شده: utilization، responseTime، connections، یا uptime
  • یک اصطلاح استاندارد از یک منبع شناخته شده، به عنوان مثال، IANA ، microformat.org و غیره
  • یک URI

مقادیر از یکی از کلیدهای زیر تشکیل شده است:

  • componentId: شناسه منحصر به فرد این کامپوننت
  • componentType:

    • یک مقدار از پیش تعریف شده، component، datastore، یا system
    • یک اصطلاح استاندارد از یک منبع شناخته شده، به عنوان مثال، IANA ، microformat.org و غیره
    • یک URI
  • observedValue: هر مقدار JSON معتبر

  • observedUnit: واحد اندازه گیری

  • status: به عنوان وضعیت شی والد، اما فقط برای این جزء

  • affectedEndpoints: اگر جزء نباشد pass، تمام نقاط پایانی تحت تأثیر را فهرست می کند

  • time: تاریخ-زمان در قالب ISO8601 مشاهده

  • output: به عنوان خروجی شی والد، اما فقط برای این جزء

  • links: بخش قبل را ببینید

  • هر مقدار غیر استاندارد دیگر

Object JSON را بررسی می کند

من سعی کردم موارد بالا را با Spring Boot با استفاده از یک سفارشی پیاده سازی کنم HealthIndicator. در اینجا بهترین چیزی است که می توانم به ذهنم برسم:

چک سلامت چکمه بهار

ساختار فعلی پاسخ JSON باید (به راحتی؟) قابل تنظیم باشد. شما باید نقطه پایانی خود را ایجاد کنید. امیدوارم تیم Spring Boot گزینه ای را برای ایجاد یک ساختار سازگار فراهم کند.

نتیجه

پیش نویس Healthcheck IETF یک ابتکار عالی برای استانداردسازی چک های سلامت در سراسر صنعت است. این به ابزارهای نظارتی اجازه می دهد تا بر وضعیت HTTP و بدنه پاسخ بدون پیکربندی ad-hoc در هر سرویس تکیه کنند.

متأسفانه، پیش نویس به دلیل عدم فعالیت منقضی شده است. با این حال، من دوست دارم دوباره آن را ببینم.

فراتر رفتن:

در ابتدا در A Java Geek در 28 می منتشر شدهفتم، 2023

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا