توسعه API و یکپارچه‌سازی سیستم‌ها

سیستم‌ها و داده‌های شما را با یک API امن به هم وصل می‌کنیم

بدون اتصال مستقیم به دیتابیس — یک API مستند و قابل کنترل بین اپ، ERP، داشبورد و شریک تجاری می‌سازیم.

مثلاً

  • Database ← API ← Mobile App
  • فروشگاه ← API ← ERP
  • تغییر قیمت ← Webhook ← سیستم مقصد

کافی است بگویید داده کجاست و چه سیستمی باید به آن وصل شود — جزئیات فنی را در امکان‌سنجی شفاف می‌کنیم.

توسعه API و یکپارچه‌سازی — اتصال امن سیستم‌ها — WebScraper.ir
ورودی
DB، استخراج، CRM
مصرف‌کننده
موبایل، ERP، B2B
تحویل
REST، OpenAPI، Webhook
پشته
Django REST / FastAPI

به زبان خیلی ساده: شما می‌گویید اطلاعات الان کجاست، چه سیستمی باید از آن استفاده کند و قرار است چه کاری انجام دهد.

شروع ساده

شما سه چیز را مشخص می‌کنید — بقیه معماری با ما

منبع

اطلاعات الان کجاست؟

ممکن است داخل:

  • دیتابیس
  • سایت یا نرم‌افزار داخلی
  • CRM یا ERP
  • فایل Excel یا JSON
  • خط استخراج داده
  • API دیگر
مصرف‌کننده

چه سیستمی باید از آن استفاده کند؟

مثلاً:

  • اپ موبایل
  • وب‌سایت
  • داشبورد
  • CRM یا ERP
  • شریک B2B
  • اتوماسیون داخلی
عملیات

قرار است چه کاری انجام دهد؟

مثلاً:

  • خواندن و جست‌وجو
  • فیلتر و گزارش
  • ثبت سفارش
  • به‌روزرسانی موجودی
  • دریافت اعلان رویداد

بقیه معماری — Endpointها، احراز هویت، Webhook و استقرار — را ما مشخص و پیاده می‌کنیم.

  • Endpoint
  • احراز هویت
  • Webhook
  • استقرار

یک API امن و مستند بین دیتابیس، داده استخراج‌شده و اپ، سایت، ERP یا شریک تجاری می‌سازیم — بدون اتصال مستقیم همه سیستم‌ها به دیتابیس.

در یک نگاه

داده کجاست و چه سیستمی باید به آن وصل شود؟

  1. شما می‌گویید

    مثال: محصولات در PostgreSQL — اپ موبایل باید لیست را بگیرد

    منبع داده، مصرف‌کننده و کار موردنظر — بدون سند فنی از قبل.

  2. ما طراحی می‌کنیم

    Endpoint، احراز هویت، سطح دسترسی، Webhook و OpenAPI مطابق پروژه.

  3. تحویل

    REST، Swagger، استقرار توافق‌شده و راهنمای استفاده برای تیم فنی یا شریک.

معرفی

API دقیقاً چه مشکلی را حل می‌کند؟

چالش

بدون لایه API، داده در Excel، ایمیل و اتصال مستقیم به DB گیر می‌کند.

راهکار

قرارداد REST مستند با احراز هویت، سطح دسترسی و Webhook — از طراحی تا استقرار.

خیلی از کسب‌وکارها بعد از مدتی به نقطه‌ای می‌رسند که اطلاعاتشان در چند سیستم مختلف پخش شده است: سایت فروشگاهی، CRM جدا، اپ موبایل، ERP، داشبورد مدیریتی و شریک تجاری که بخشی از داده را می‌خواهد.

اگر هر سیستم مستقیماً به دیتابیس یا فایل‌های داخلی وصل شود، خیلی زود همه‌چیز شکننده، ناامن و سخت‌نگهداری می‌شود.

API یک لایه مشخص بین سیستم‌ها ایجاد می‌کند: هر مصرف‌کننده فقط همان اطلاعاتی را می‌بیند یا تغییر می‌دهد که مجاز است — بدون دیدن ساختار داخلی دیتابیس شما.

هدف ما ساخت API نیست؛ حل اتصال امن و پایدار بین سیستم‌هایی است که باید با هم کار کنند.

قبل و بعد از API

دسترسی زنده و کنترل‌شده

قبل — Excel و فایل دستی

  • شریک می‌گوید فایل محصولات را بفرستید — هر تغییر قیمت یعنی Excel جدید
  • ستون‌ها عوض می‌شود و سیستم طرف مقابل بدون اطلاع خراب می‌شود
  • هر سیستم جدا به دیتابیس وصل می‌شود و نگهداری غیرممکن می‌شود

بعد — Partner → API → آخرین اطلاعات

  • شریک مستقیماً از API آخرین اطلاعات موردنیازش را می‌گیرد
  • قیمت عوض شد؟ در درخواست بعدی یا با Webhook همان لحظه
  • یک API — دسترسی‌های متفاوت برای اپ، ERP و B2B

مخاطب

این سرویس برای چه کسی معنا دارد؟

نیمۀ اول صفحه برای مدیر کسب‌وکار است؛ نیمۀ دوم برای تیم فنی که باید مطمئن شود Authentication، Versioning و Deployment جدی طراحی شده است.

اپ و سایت همان دادهٔ به‌روز را بگیرند

بدون کپی دستی و بدون اتصال مستقیم به دیتابیس — تیم محصول روی تجربه کاربر کار می‌کند، نه هماهنگی فایل.

  • موبایل
  • وب‌اپ
  • یک منبع داده

رویداد لحظه‌ای

Webhook؛ وقتی نمی‌خواهید سیستم مقصد دائم سؤال کند

گاهی باید بدانید سفارش جدید ثبت شده، قیمت تغییر کرده، استخراج تمام شده، موجودی کم شده یا پرداخت موفق بوده — بدون اینکه هر دقیقه بپرسند «اتفاقی افتاده؟»

  • سفارش جدید ← Webhook ← ERP
  • تغییر قیمت ← Webhook ← سیستم شما
  • پایان استخراج ← Webhook ← اپلیکیشن

رویداد اتفاق می‌افتد و سیستم مقصد همان لحظه مطلع می‌شود — با تلاش مجدد و امضای اختیاری در محدوده قرارداد.

استقرار

API می‌تواند روی سیستم فعلی شما ساخته شود

۱

بدون بازنویسی کل نرم‌افزار

روی Django، دیتابیس، ERP یا CRM موجود می‌توان API Layer اضافه کرد.

۲

سرور شما

استقرار روی VPS یا زیرساخت خودتان با CI/CD توافق‌شده.

۳

زیرساخت WebScraper.ir

در پروژه‌هایی که میزبانی جزو قرارداد باشد.

محدوده

چه چیزی تحویل می‌گیرید؟

بسته به محدوده پروژه؛ موارد زیر می‌توانند در قرارداد باشند.

معمولاً داخل تحویل

  • REST API با Endpointهای نسخه‌بندی‌شده
  • OpenAPI و Swagger برای تست
  • احراز هویت (API Key، Token یا JWT)
  • محدودیت درخواست و صفحه‌بندی
  • Webhook برای رویدادهای توافق‌شده
  • ثبت گزارش درخواست و خطا
  • تست‌های اصلی و استقرار توافق‌شده
  • راهنمای استفاده برای تیم فنی یا شریک

خارج از محدوده پیش‌فرض

  • طراحی و توسعه اپ موبایل یا UI مصرف‌کننده
  • ضمانت دسترس‌پذیری سرویس بیرونی بدون قرارداد میزبانی
  • GraphQL پیش‌فرض — فقط در پروژه‌های مشخص
  • مدیریت صورتحساب SaaS شریک (مگر توافق جدا)

هر مصرف‌کننده می‌تواند دسترسی متفاوت داشته باشد

همه به یک API متصل‌اند، اما اختیاراتشان یکسان نیست — از ابتدا در معماری تعریف می‌شود.

اپلیکیشن موبایل

فقط خواندن محصولات و سفارش‌های کاربر

ERP

خواندن محصول و به‌روزرسانی موجودی

شریک تجاری

فقط یک گروه مشخص از محصولات و قیمت‌ها

قرارداد

API اختصاصی یعنی فقط چند URL نمی‌سازیم

بسته به پروژه طراحی می‌شوند — نه همه را بدون دلیل روی هر پروژه.

الزامی

احراز هویت

چه کسی درخواست ارسال کرده؟ API Key، Token یا JWT

الزامی

سطح دسترسی

هر مصرف‌کننده چه ببیند یا تغییر دهد؟

بالا

محدودیت درخواست

کنترل تعداد Request — پاسخ ۴۲۹ شفاف

بالا

صفحه‌بندی و فیلتر

یک میلیون رکورد با یک درخواست برنگردد

بالا

نسخه‌بندی

تغییر API نسخهٔ قدیمی را یک‌شبه نشکند

متوسط

ثبت گزارش

شناسه درخواست و پیگیری خطا

الزامی

مستندات

تیم مقابل دقیقاً بداند چطور استفاده کند

کاربرد

سطح دسترسی و عملیات رایج

موبایل

ورودی محصول برای موبایل

صفحه‌بندی و فیلتر برای اپ یا بازارگاه.

رویداد

Webhook قیمت

تغییر قیمت ← اعلان فوری به سیستم مقصد.

B2B

شریک B2B

کلید جدا و محدوده داده مشخص.

ERP

همگام‌سازی ERP

سفارش سایت ← ERP بدون ورود دستی.

Scraper

داده استخراج‌شده

آخرین قیمت و موجودی بازار برای محصول شما.

داشبورد

داشبورد یکپارچه

چند منبع از یک API واحد.

تحویل

درگاه را چطور دریافت می‌کنید؟

همان قرارداد — به شکلی که تیم فنی و شریک واقعاً استقرار و استفاده می‌کنند.

۱

REST JSON

مسیرهای نسخه‌دار با پاسخ یکسان در آزمایشی و اصلی.

  • v1
  • JSON
  • HTTPS
۲

OpenAPI

Swagger UI و خروجی برای تولید کد سمت مصرف‌کننده.

  • مستندات
  • curl
  • Postman
۳

Webhook

سفارش، قیمت، موجودی یا پایان استخراج.

  • تلاش مجدد
  • امضا
۴

استقرار

سرور شما، داخل Django موجود یا میزبانی توافق‌شده.

  • آزمایشی
  • سلامت
  • Backup

فرایند

فرایند اجرای پروژه

  1. شناخت اتصال

    داده کجاست، چه کسی مصرف می‌کند، چه کاری باید انجام شود

  2. طراحی قرارداد API

    Endpoint، دسترسی، خطا، صفحه‌بندی و Versioning

  3. نمونه اولیه

    مسیر اصلی روی داده واقعی تست می‌شود

  4. توسعه

    Endpointها، Authentication و منطق پروژه

  5. تست یکپارچگی

    اتصال سیستم شما و مصرف‌کننده واقعی

  6. تست عملکرد

    در صورت نیاز، رفتار تحت بار

  7. مستندات

    OpenAPI و راهنمای مصرف

  8. استقرار

    محیط توافق‌شده — سرور شما یا میزبانی قراردادی

  9. تحویل

    تیم یا شریک فنی بر اساس مستندات استفاده می‌کند

تست فراتر از «Endpoint جواب می‌دهد»

قبل از تحویل سناریوهای واقعی بررسی می‌شوند:

احراز هویت و خطا
  • Token اشتباه
  • داده پیدا نشد
  • درخواست بیش از حد
Webhook و حجم
  • مقصد Webhook قطع
  • ۱۰ هزار رکورد
  • نسخه جدید API

مستندات API بخشی از تحویل است

API بدون مستندات بعد از مدتی تبدیل به دردسر می‌شود. در پروژه‌های مناسب قرارداد با OpenAPI مشخص می‌شود: Endpointها، ورودی، پاسخ، خطاها و روش احراز هویت.

در صورت نیاز Swagger UI، نمونه Request و Response، نمونه curl و Collection تست هم در تحویل قرار می‌گیرد.

  • OpenAPI
  • Swagger UI
  • نمونه curl
  • Postman Collection

API فقط برای خواندن اطلاعات نیست

قبل از توسعه مشخص می‌کنیم هر مصرف‌کننده دقیقاً چه اختیاری دارد.

Read

خواندن اطلاعات

Create

ایجاد رکورد جدید

Update

به‌روزرسانی داده

Search & Filter

جست‌وجو و برگرداندن بخشی از داده

Trigger

شروع یک فرایند

Notify

اعلان رویداد با Webhook

داده‌ها

یک نمونه ساده از پاسخ API

جزئیات واقعی هر پروژه در OpenAPI همان قرارداد ثبت می‌شود؛ این ساختار فقط برای تصویرسازی شکل خروجی است.

GET /api/v1/products?page=1&page_size=50
GET /api/v1/products درخواست نمونه با page و page_size
data[] لیست منابع درخواستی
pagination page، page_size، has_next
meta.request_id ردیابی درخواست در log
meta.api_version نسخه قرارداد فعال
نمونه پاسخ API

داده نمایشی — ساختار نهایی در OpenAPI پروژه ثبت می‌شود. قیمت در DB این پروژه تومان است؛ در Schema بیرونی به ریال (IRR) نگاشت می‌شود.

{
  "data": [
    {
      "sku": "A-1",
      "title": "نمونه محصول",
      "price": 1200000,
      "in_stock": true
    }
  ],
  "pagination": {
    "page": 1,
    "page_size": 50,
    "has_next": true
  },
  "meta": {
    "request_id": "req_8f3a2c",
    "api_version": "v1"
  }
}

فنی

جزئیات فنی — برای تیم مهندسی و یکپارچه‌سازی

امنیت API را از آخر پروژه اضافه نمی‌کنیم

امنیت از طراحی اولیه دیده می‌شود — API Key، Token، JWT، سطح دسترسی نقش‌محور، محدودیت درخواست، ثبت گزارش درخواست و امضای Webhook بسته به حساسیت داده انتخاب می‌شوند.

قرار نیست همه این‌ها بدون دلیل روی هر پروژه پیاده شوند؛ معماری بر اساس نوع مصرف‌کننده تعیین می‌شود.

REST یا GraphQL؟

برای بسیاری از پروژه‌های تجاری REST انتخاب ساده‌تر و قابل‌پیش‌بینی‌تری است — معمولاً از REST شروع می‌کنیم. GraphQL در پروژه‌هایی که واقعاً نیاز داشته باشند بررسی می‌شود.

Django REST Framework یا FastAPI؟

اگر سیستم اصلی Django است، Admin و منطق کسب‌وکار همان‌جا است — DRF انتخاب طبیعی است. FastAPI برای سرویس‌های مستقل یا معماری سبک‌تر مناسب است. تکنولوژی را بر اساس پروژه انتخاب می‌کنیم، نه برعکس.

Django REST Framework

وقتی اکوسیستم Django و Admin همان‌جا است

FastAPI

سرویس مستقل یا معماری سبک‌تر

PostgreSQL

منبع حقیقت داده

Redis

cache، محدودیت درخواست و صف

وابستگی به سیستم‌های بیرونی

  • پایداری کل سیستم فقط به کد ما بستگی ندارد اگر منبع خارجی ناپایدار باشد
  • سقف درخواست منبع بالادست در طراحی لحاظ می‌شود
  • تغییر ساختار منبع بدون Versioning مصرف‌کننده را می‌شکند
  • داده حساس در log فقط با توافق ممیزی ذخیره می‌شود

محدودیت درخواست بر اساس مصرف واقعی و زیرساخت تعیین می‌شود — عدد ثابت از قبل وعده داده نمی‌شود.

API روی سرور چه کسی اجرا می‌شود؟

پیش از شروع مسئولیت میزبانی، Backup، پایش، استقرار و نگهداری مشخص می‌شود.

اگر API به سرویس خارجی وابسته باشد، قطع‌شدن، محدودیت درخواست و تغییر ساختار پاسخ از ابتدا در معماری Retry، Cache، Timeout و Fallback لحاظ می‌شود.

سرور شماVPS یا زیرساخت خودتان
زیرساخت WebScraper.irوقتی میزبانی در قرارداد باشد
داخل سیستم فعلیمثلاً لایه API روی Django موجود

چه زمانی واقعاً به API نیاز دارید؟

اگر این جمله‌ها آشناست

  • اپ باید اطلاعات سایت را داشته باشد.
  • فروشگاه و ERP با هم هماهنگ نیستند.
  • هر روز برای شریکمان Excel می‌فرستیم.
  • می‌خواهیم داده Scraper را داخل نرم‌افزارمان دریافت کنیم.
  • وقتی رویدادی اتفاق می‌افتد سیستم دیگری باید فوراً مطلع شود.

چه زمانی شاید API لازم نباشد؟

  • فقط یک‌بار باید اطلاعات را منتقل کنید — Export ساده ممکن است کافی باشد.
  • دو سیستم هیچ تعامل دائمی ندارند — هزینه API اضافه است.
  • یک اتوماسیون ساده همان مسئله را حل می‌کند — پروژه را پیچیده نمی‌کنیم.

هدف ما ساخت API نیست؛ حل اتصال بین سیستم‌هاست.

API و اتوماسیون چه فرقی دارند؟

API راه ارتباطی استاندارد بین سیستم‌هاست؛ اتوماسیون مشخص می‌کند وقتی این اتفاق افتاد چه کاری انجام شود.

API: CRM ↔ حسابداری · اتوماسیون: پرداخت ← فاکتور ← به‌روز CRM ← پیام

اتوماسیون فرایندها و گردش کار →

API و Web Scraping چه ارتباطی دارند؟

استخراج داده را از منبع جمع می‌کند؛ API آن را برای سیستم دیگر قابل استفاده می‌کند.

Website ← Scraper ← Database ← API ← App

توسعه ربات و Scraper اختصاصی →

پرسش‌های متداول

پرسش‌های متداول

خود API فنی است، اما مسئله‌ای که حل می‌کند معمولاً کاملاً کسب‌وکاری است — مثل اتصال فروشگاه به ERP یا دسترسی شریک تجاری.

گام بعد

بگویید داده کجاست و چه چیزی باید به آن وصل شود

برای شروع نیازی به سند فنی ندارید. ما بررسی می‌کنیم چه معماری مناسب است، چه سطح دسترسی لازم دارید و نسخه اول API دقیقاً چه چیزی باید تحویل دهد.

  • محصولات داخل PostgreSQL هستند و اپ موبایل باید آن‌ها را نمایش دهد.
  • از چند سایت قیمت استخراج می‌کنیم و مشتری می‌خواهد از طریق API دریافت کند.
  • سفارش‌ها داخل سایت هستند ولی باید به ERP منتقل شوند.
  • یک شریک تجاری باید فقط بخشی از موجودی و قیمت‌های ما را ببیند.