تشخیص انحراف قرارداد API با n8n و Slack در Axeto.ai

تشخیص انحراف قرارداد API با n8n و Slack در Axeto.ai

5 دقیقه مطالعه · منتشر شده ۱۴۰۵/۴/۲۷

دانلود workflow

فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.

  1. فایل JSON را دانلود کنید.
  2. در n8n: Workflows → Import from File.
  3. Credentialهای هر node را متصل کنید.
  4. workflow را فعال کنید.

شناسه workflow: 16699 · منبع: کاتالوگ Axeto

هشدار در مورد انحراف قرارداد API با استفاده از جداول داده و Slack در Axeto.ai

این گردش کار نحوه تشخیص و هشدار در مورد انحراف قرارداد API را با استفاده از n8n در Axeto.ai نشان می‌دهد. این گردش کار از جداول داده برای ذخیره پاسخ‌های مورد انتظار API استفاده می‌کند و آن‌ها را با پاسخ‌های واقعی API مقایسه می‌کند تا مغایرت‌ها را شناسایی کند. سپس هشدارها از طریق Slack ارسال می‌شوند.

دسته‌ها: DevOps، نظارت بر API، اتوماسیون

کاتالوگ n8n در Axeto.ai: https://axeto.ai/n8n

نمای کلی گردش کار

این گردش کار مراحل زیر را انجام می‌دهد:

1. Trigger زمان‌بندی شده: گردش کار را در یک بازه زمانی تعریف شده آغاز می‌کند.

2. درخواست HTTP: قرارداد فعلی API یا یک پاسخ نمونه را از API هدف شما واکشی می‌کند.

3. جدول داده (قرارداد مورد انتظار): ساختار و مقادیر شناخته شده و صحیح پاسخ API شما را ذخیره می‌کند.

4. گره کد (مقایسه): پاسخ واقعی API را با قرارداد مورد انتظار ذخیره شده در جدول داده مقایسه می‌کند.

5. گره If: بررسی می‌کند که آیا تفاوتی پیدا شده است یا خیر.

6. گره Set (آماده‌سازی هشدار): در صورت شناسایی تفاوت‌ها، این گره پیام هشدار را قالب‌بندی می‌کند.

7. گره Slack: پیام هشدار قالب‌بندی شده را به یک کانال Slack اختصاصی ارسال می‌کند.

8. گره NoOp: یک جای نگهدار برای مواردی که انحرافی شناسایی نمی‌شود، که به گردش کار اجازه می‌دهد به طور کامل تکمیل شود.

9. یادداشت چسبان: یک نشانه بصری و توضیحات برای هر بخش اصلی گردش کار ارائه می‌دهد.

گره‌های مورد استفاده

  • n8n-nodes-base.scheduleTrigger
  • n8n-nodes-base.httpRequest
  • n8n-nodes-base.dataTable
  • n8n-nodes-base.code
  • n8n-nodes-base.if
  • n8n-nodes-base.set
  • n8n-nodes-base.slack
  • n8n-nodes-base.noOp
  • n8n-nodes-base.stickyNote

راه‌اندازی و پیکربندی

1. Trigger زمان‌بندی شده: گره ScheduleTrigger را برای اجرای گردش کار با فرکانس دلخواه خود (به عنوان مثال، روزانه، ساعتی) پیکربندی کنید.

2. درخواست HTTP:

* URL: نقطه پایانی API خود را که قرارداد یا پاسخ نمونه را ارائه می‌دهد، وارد کنید.

* Method: متد HTTP مناسب (به عنوان مثال، GET) را انتخاب کنید.

* Authentication: هرگونه احراز هویت لازم برای API خود را پیکربندی کنید.

3. جدول داده (قرارداد مورد انتظار):

* Name: یک نام توصیفی به جدول داده خود بدهید (به عنوان مثال، apiContract_users).

* Columns: ستون‌هایی را تعریف کنید که ساختار مورد انتظار پاسخ API شما را نشان می‌دهند. به عنوان مثال، اگر API شما داده‌های کاربر را برمی‌گرداند، ممکن است ستون‌هایی مانند id، name، email، status داشته باشید.

Rows: جدول داده را با مقادیر و ساختار مورد انتظار* یک پاسخ معتبر API پر کنید. این خط پایه شماست.

4. گره کد (مقایسه):

* این گره حاوی کد جاوا اسکریپت برای مقایسه خروجی گره httpRequest با داده‌های گره dataTable خواهد بود.

* کد باید از طریق پاسخ واقعی API تکرار شود و آن را با ساختار و مقادیر مورد انتظار در جدول داده مقایسه کند.

* این باید فیلدهای از دست رفته، فیلدهای غیرمنتظره یا مقادیر متفاوت را شناسایی کند.

* خروجی این گره باید نشان دهد که آیا انحراف شناسایی شده است و جزئیات مربوط به مغایرت‌ها را ارائه دهد.

```javascript

// Example comparison logic (adapt to your specific API response structure)

const actualResponse = $json.get(0); // Assuming actual API response is the first item

const expectedContract = $json.get(1); // Assuming Data Table output is the second item

let driftDetected = false;

let driftDetails = [];

// Simple check: compare keys

const actualKeys = Object.keys(actualResponse);

const expectedKeys = Object.keys(expectedContract);

// Check for missing keys in actual response

expectedKeys.forEach(key => {

if (!actualKeys.includes(key)) {

driftDetected = true;

driftDetails.push(Missing expected key: ${key});

}

});

// Check for unexpected keys in actual response

actualKeys.forEach(key => {

if (!expectedKeys.includes(key)) {

driftDetected = true;

driftDetails.push(Unexpected key found: ${key});

}

});

// Check for value differences (if keys match)

expectedKeys.forEach(key => {

if (actualKeys.includes(key) && actualResponse[key] !== expectedContract[key]) {

driftDetected = true;

driftDetails.push(Value mismatch for key "${key}": Expected "${expectedContract[key]}", Got "${actualResponse[key]}");

}

});

return {

driftDetected: driftDetected,

details: driftDetails

};

```

5. گره If:

* Condition: شرط را برای بررسی خروجی driftDetected از گره کد تنظیم کنید. به عنوان مثال: {{ $json.get(0).driftDetected }}. این کار گردش کار را در صورت true بودن driftDetected به سمت اعلان Slack هدایت می‌کند.

6. گره Set (آماده‌سازی هشدار):

* این گره پیام ارسالی به Slack را ایجاد می‌کند.

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

```json

{

"slackMessage": "🚨 API Contract Drift Detected!\n\nAPI Endpoint: {{ $json.get(2).url }}\n\nDetails:\n{{ $json.get(0).details.join('\n') }}"

}

```

* توجه: شاخص‌های $json.get() را بر اساس ترتیب خروجی واقعی گره‌های قبلی تنظیم کنید.

7. گره Slack:

* Connection: اعتبارنامه API Slack خود را پیکربندی کنید.

* Channel: کانال Slack را که می‌خواهید هشدارها را در آن دریافت کنید، مشخص کنید.

* Text: از خروجی گره Set برای پر کردن محتوای پیام استفاده کنید. به عنوان مثال: {{ $json.get(0).slackMessage }}.

8. گره NoOp: خروجی "false" گره If را به این گره NoOp متصل کنید. این نشان می‌دهد که در صورت عدم شناسایی انحراف، نیازی به اقدام نیست.

وارد کردن گردش کار

شما می‌توانید با دانلود JSON گردش کار و استفاده از گزینه وارد کردن، این گردش کار را در نمونه n8n Axeto.ai خود وارد کنید.

کاتالوگ n8n در Axeto.ai: https://axeto.ai/n8n

بهبودهای بیشتر

  • مقایسه پیچیده‌تر: منطق مقایسه قوی‌تری را در گره کد پیاده‌سازی کنید تا اشیاء تو در تو، آرایه‌ها و تغییرات نوع داده را مدیریت کند.
  • مدیریت خطا: مدیریت خطا را برای درخواست‌های API یا عملیات جدول داده اضافه کنید.
  • داده‌های تاریخی: پاسخ‌های تاریخی API را برای ردیابی انحراف در طول زمان ذخیره کنید.
  • کانال‌های اطلاع‌رسانی مختلف: با سایر سرویس‌های اطلاع‌رسانی مانند ایمیل یا PagerDuty ادغام شوید.
  • بازگشت خودکار: در سناریوهای حیاتی، منطقی را برای فعال کردن خودکار بازگشت در صورت شناسایی انحراف قابل توجه در نظر بگیرید.

Nodeهای استفاده‌شده

سوالات متداول

انحراف قرارداد API چیست؟

انحراف قرارداد API زمانی رخ می‌دهد که پاسخ واقعی یک API با ساختار یا داده‌های مورد انتظار تعریف شده در قرارداد API مطابقت نداشته باشد. این می‌تواند منجر به خطا در برنامه‌هایی شود که از آن API استفاده می‌کنند.

چگونه n8n به تشخیص انحراف قرارداد API کمک می‌کند؟

n8n می‌تواند پاسخ‌های واقعی API را دریافت کرده، آن‌ها را با یک قرارداد مورد انتظار که در جداول داده ذخیره شده است مقایسه کند و در صورت شناسایی هرگونه مغایرت، هشدارهایی را از طریق کانال‌هایی مانند Slack ارسال کند.

چه گره‌هایی در گردش کار n8n برای این منظور استفاده می‌شوند؟

گره‌های کلیدی شامل `ScheduleTrigger` برای زمان‌بندی، `httpRequest` برای دریافت پاسخ API، `dataTable` برای ذخیره قرارداد مورد انتظار، گره کد برای مقایسه، `if` برای بررسی نتایج، و `slack` برای ارسال هشدارها هستند.

workflowهای مرتبط

این workflow در کاتالوگ Axeto.ai بایگانی شده است. لایسنس اصلی متعلق به سازنده workflow است.