مستندات n8n
74+ نود
🌐

درخواست HTTP

HTTP Request

ارسال درخواست HTTP به هر API، دریافت و پردازش داده با انواع احراز هویت

ابزارهای توسعه
متوسط
۰ بازدید
n8n 1.0+

نمای کلی

نود HTTP Request ابزاری همه‌کاره برای ارتباط با APIهای خارجی و داخلی است.

قابلیت‌های کلیدی:

  • ارسال درخواست‌های GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS
  • پشتیبانی از JSON, Form Data, Multipart/Form-Data
  • ارسال و دریافت فایل (Binary Data)
  • احراز هویت: API Key, Basic Auth, OAuth2, Bearer Token, Digest Auth
  • کار با Header‌ها و Query Parameters
  • Pagination خودکار
  • Retry on Fail
  • Response Filtering
  • SSL Certificate Verification
  • Proxy Support
  • GraphQL Queries
  • XML/SOAP Support

کاربردها:

  • اتصال به هر API که نود اختصاصی ندارد
  • ارسال داده به سرویس‌های خارجی
  • دریافت اطلاعات از منابع مختلف
  • یکپارچه‌سازی Microservices
  • فراخوانی Webhookهای سرویس‌های دیگر
  • دانلود و آپلود فایل
  • تست و Debug کردن APIها
  • Web Scraping (دریافت HTML)

چرا HTTP Request مهم است؟

n8n برای سرویس‌های محبوب نودهای اختصاصی دارد (Gmail, Telegram, ...) ولی برای هزاران API دیگر، HTTP Request تنها راه ارتباط است.

احراز هویت

روش‌های احراز هویت

1. بدون احراز هویت (None)

برای APIهای عمومی بدون نیاز به کلید:

code
URL: https://api.exchangerate.host/latest?base=USD
Method: GET
Authentication: None

2. Header Authentication (رایج‌ترین)

API Key در Header:

#### Bearer Token:

code
Header: Authorization
Value: Bearer sk-abc123...

// یا
Header: X-API-Key
Value: your-api-key

#### تنظیم در n8n:

  1. 1Credentials > Header Auth
  2. 2Name: Authorization
  3. 3Value: Bearer YOUR_TOKEN

3. Basic Auth

Username و Password:

code
Username: my_user
Password: my_password

// n8n خودکار Base64 encode می‌کند
// Header: Authorization: Basic base64(user:pass)

4. OAuth2

برای سرویس‌هایی مثل Google, GitHub, Twitter:

  1. 1Client ID و Client Secret از سرویس دریافت کنید
  2. 2در n8n: Credentials > OAuth2
  3. 3Authorization URL و Token URL وارد کنید
  4. 4Scopes مورد نیاز
  5. 5Connect بزنید

5. Query Parameter Auth

API Key در URL:

code
URL: https://api.example.com/data?api_key=YOUR_KEY&format=json

6. Digest Auth

احراز هویت پیشرفته (برای برخی سرویس‌ها):

  • Username و Password مانند Basic ولی امن‌تر

نکات امنیتی:

  • API Key‌ها را در Credentials ذخیره کنید نه در URL
  • از Environment Variables استفاده کنید
  • HTTPS همیشه استفاده کنید
  • هرگز کلیدها را در لاگ چاپ نکنید

عملیات‌های موجود

1

GET

دریافت اطلاعات از API (Read/خواندن)

2

POST

ارسال داده جدید به API (Create/ایجاد)

3

PUT

جایگزینی کامل یک رکورد (Full Update)

4

PATCH

تغییر بخشی از رکورد (Partial Update)

5

DELETE

حذف یک رکورد

6

HEAD

فقط هدرهای پاسخ (بدون بدنه)

کاربردهای متداول

1. دریافت نرخ ارز

دریافت قیمت لحظه‌ای:

code
Schedule (هر ساعت)
  → HTTP Request (GET)
    URL: https://api.exchangerate.host/latest
    Query: base=USD&symbols=IRR,EUR,GBP
  → Set (فرمت فارسی)
  → Telegram (ارسال نرخ‌ها)

2. ارسال داده به API

ثبت سفارش در سیستم دیگر:

code
Webhook (سفارش جدید)
  → HTTP Request (POST)
    URL: https://crm.example.com/api/orders
    Content-Type: JSON
    Body: {
      "customer": "{{$json.name}}",
      "phone": "{{$json.phone}}",
      "items": {{JSON.stringify($json.items)}},
      "total": {{$json.total}}
    }
    Headers:
      Authorization: Bearer {{$credentials.apiKey}}
      Content-Type: application/json
  → IF (statusCode == 201)
    → MySQL (ثبت موفق)
    → Else: Telegram (خطا)

3. Pagination - دریافت همه صفحات

دریافت لیست کامل با صفحه‌بندی:

code
Set (page = 1, allData = [])
  → Loop
    → HTTP Request (GET)
      URL: https://api.example.com/users
      Query: page={{$json.page}}&limit=100
    → Code (اضافه به allData)
    → IF (hasNextPage)
      → Set (page++)
      → Back to Loop
    → Else: خروج

4. آپلود فایل (Multipart)

ارسال فایل به API:

code
Google Drive (Download file)
  → HTTP Request (POST)
    URL: https://api.example.com/upload
    Content-Type: Multipart/Form-Data
    Body:
      file: {{$binary.data}}
      description: "فایل بک‌آپ"

5. دانلود فایل

دریافت فایل از URL:

code
HTTP Request (GET)
  URL: https://example.com/report.pdf
  Response Format: File
  → Google Drive (Upload)
  → Gmail (ارسال به ایمیل)

6. GraphQL Query

درخواست GraphQL:

code
HTTP Request (POST)
  URL: https://api.example.com/graphql
  Content-Type: JSON
  Body: {
    "query": "query { users(limit: 10) { id name email } }",
    "variables": {}
  }

7. SOAP/XML Request

ارسال درخواست SOAP:

code
HTTP Request (POST)
  URL: https://api.example.com/soap
  Content-Type: Raw (text/xml)
  Body:
    <?xml version="1.0"?>
    <soap:Envelope>
      <soap:Body>
        <GetPrice>
          <Item>Widget</Item>
        </GetPrice>
      </soap:Body>
    </soap:Envelope>

8. Web Scraping

دریافت محتوای وب:

code
HTTP Request (GET)
  URL: https://example.com/products
  Response Format: Text (HTML)
  → Code (Parse HTML با regex یا cheerio)
  → MySQL (ذخیره داده)

9. Health Check سرویس‌ها

بررسی وضعیت APIها:

code
Schedule (هر 5 دقیقه)
  → HTTP Request (GET)
    URL: https://api.myservice.com/health
    Timeout: 5000
  → IF (status != 200 OR timeout)
    → Telegram (هشدار: سرویس Down)
    → MySQL (لاگ)

10. Chained API Calls

فراخوانی APIهای وابسته:

code
HTTP Request 1 (POST: Login)
  URL: https://api.example.com/auth/login
  Body: {"email": "...", "password": "..."}
  → Set (token = response.token)

HTTP Request 2 (GET: Data)
  URL: https://api.example.com/data
  Headers: Authorization: Bearer {{$json.token}}
  → Process data

نکات حرفه‌ای

نکات حرفه‌ای

  1. 1URL داینامیک: از Expression استفاده کنید:
code
https://api.example.com/users/{{$json.userId}}/orders
   https://api.example.com/search?q={{encodeURIComponent($json.query)}}
  1. 1Query Parameters: از بخش جداگانه استفاده کنید (تمیزتر):
code
// به جای:
   URL: https://api.com/data?page=1&limit=10&sort=name

   // از:
   URL: https://api.com/data
   Query Parameters:
     page: 1
     limit: 10
     sort: name
  1. 1Response Format:
code
JSON: برای API‌ها (پیش‌فرض)
   Text: برای HTML، XML، متن ساده
   File: برای دانلود فایل (Binary)
  1. 1Retry on Fail: برای درخواست‌های مهم:
code
Retry on Fail: ON
   Max Tries: 3
   Wait Between Tries: 1000ms
  1. 1Timeout: تنظیم مناسب:
code
API سریع: 10000 (10 ثانیه)
   API معمولی: 30000 (30 ثانیه)
   دانلود فایل: 300000 (5 دقیقه)
  1. 1Content-Type Header:
code
JSON:      application/json
   Form:      application/x-www-form-urlencoded
   Multipart: multipart/form-data
   XML:       text/xml یا application/xml
   Text:      text/plain
  1. 1Error Handling: بررسی Status Code:
code
HTTP Request → IF ({{$json.statusCode}} >= 400)
     → True: Error handling
     → False: Process data
  1. 1دسترسی به پاسخ:
javascript
// بدنه پاسخ
   {{$json.data}}

   // Status Code
   {{$response.statusCode}}

   // هدرهای پاسخ
   {{$response.headers['content-type']}}
  1. 1Batch Requests: ارسال چند درخواست:
code
Split In Batches (10 عدد)
     → HTTP Request
     → Wait (100ms)
     → Merge Results
  1. 1Proxy: برای دور زدن محدودیت‌ها:
code
Proxy URL: http://proxy.example.com:8080
  1. 1Self-signed Certificate:
code
Allow Unauthorized Certs: ON
    // فقط برای تست! در Production SSL معتبر استفاده کنید
  1. 1Pagination خودکار:
code
// n8n v1.x: Pagination Mode
    Pagination Mode: Response Contains Next URL
    Next URL: {{$response.body.next}}
    Max Pages: 10
  1. 1Binary Data: ارسال و دریافت فایل:
code
// دانلود
    Response Format: File
    Output: Binary Data

    // آپلود
    Content-Type: Multipart
    Field: file → Binary Property: data
  1. 1Cache Response: برای APIهای کند:
code
MongoDB (Check Cache)
      → IF (fresh) → Return cached
      → IF (stale) → HTTP Request → Save to Cache
  1. 1API Rate Limit Management:
code
// بررسی هدرهای Rate Limit
    X-RateLimit-Remaining: تعداد باقیمانده
    X-RateLimit-Reset: زمان ریست
    Retry-After: ثانیه انتظار

    IF (remaining < 5) → Wait → Continue

رفع مشکلات

خطاهای رایج

1. خطای 401 Unauthorized

علت: API Key، Token یا اطلاعات احراز هویت اشتباه

راه‌حل

  • API Key را بررسی کنید
  • فرمت Header: Bearer TOKEN (با فاصله بعد از Bearer)
  • تاریخ انقضای Token
  • Scope/Permission کافی
  • از Postman تست کنید

2. خطای 403 Forbidden

علت: دسترسی ممنوع

راه‌حل

  • IP Whitelist سرویس را بررسی کنید
  • Plan/Subscription فعال باشد
  • Scope/Permission لازم را داشته باشید
  • CORS (فقط در Browser رخ می‌دهد، n8n مشکل ندارد)

3. خطای 404 Not Found

علت: آدرس URL اشتباه

راه‌حل

  • URL را از مستندات API بررسی کنید
  • Endpoint صحیح: /api/v2/users نه /api/users
  • نسخه API: v1 vs v2
  • Trailing slash: /users vs /users/

4. خطای 429 Too Many Requests

علت: محدودیت Rate Limit

راه‌حل

  • Wait Node بین درخواست‌ها:
code
HTTP Request → Wait (1 second) → Next Request
  • Rate Limit API را بررسی کنید
  • Retry-After header را بخوانید
  • از Retry on Fail استفاده کنید

5. خطای 500 Internal Server Error

علت: خطای سمت سرور

راه‌حل

  • بدنه درخواست را بررسی کنید
  • فرمت داده صحیح باشد (JSON valid)
  • از سرویس‌دهنده API بپرسید
  • از Retry on Fail استفاده کنید

6. Timeout Error

علت: سرور به موقع پاسخ نمی‌دهد

راه‌حل

  • Timeout افزایش دهید (پیش‌فرض: 300000ms)
  • اتصال اینترنت سرور n8n
  • وضعیت API مقصد
  • Proxy تنظیمات

7. خطای "Invalid JSON"

علت: بدنه درخواست JSON معتبر نیست

راه‌حل

  • JSON Validator استفاده کنید
  • کوتیشن‌ها: " نه '
  • آخرین ویرگول اضافی نباشد
  • Expression‌ها evaluate شوند

8. خطای SSL/Certificate

علت: گواهی SSL نامعتبر

راه‌حل

  • Allow Unauthorized Certificates فعال کنید (فقط تست)
  • CA Certificate اضافه کنید
  • در Production: SSL معتبر استفاده کنید
اشتراک‌گذاری:

آیا این مستندات مفید بود؟