توسعه API و یکپارچهسازی سیستمها
سیستمها و دادههای شما را با یک API امن به هم وصل میکنیم
بدون اتصال مستقیم به دیتابیس — یک API مستند و قابل کنترل بین اپ، ERP، داشبورد و شریک تجاری میسازیم.
مثلاً
- Database ← API ← Mobile App
- فروشگاه ← API ← ERP
- تغییر قیمت ← Webhook ← سیستم مقصد
کافی است بگویید داده کجاست و چه سیستمی باید به آن وصل شود — جزئیات فنی را در امکانسنجی شفاف میکنیم.
- ورودی
- DB، استخراج، CRM
- مصرفکننده
- موبایل، ERP، B2B
- تحویل
- REST، OpenAPI، Webhook
- پشته
- Django REST / FastAPI
کاربردهای واقعی
چه نوع APIهایی برای کسبوکارها میسازیم؟
هر مورد یک سناریوی رایج — با مسیر دادهٔ مشخص.
API برای اپلیکیشن موبایل
محصولات، کاربران یا سفارشها در سیستم اصلی شماست؛ اپ نباید مستقیم به دیتابیس وصل شود.
Database ← API ← Mobile App
مثلاً GET /products، GET /orders و POST /customers — فقط همان Endpointهایی که اپ لازم دارد.
API برای وبسایت یا Web App
وقتی Backend و Frontend جدا هستند، API بین آنها قرار میگیرد تا رابط کاربری بدون وابستگی به ساختار داخلی Backend رشد کند.
Backend ← API ← Website / Web App
API برای دادههای استخراجشده
بهجای Excel روزانه، سیستم مقصد همیشه آخرین قیمت، محصول، آگهی یا موجودی را از API میگیرد.
Scraper ← Database ← API ← سیستم شما
اگر پروژه استخراج داده دارید، ربات استخراج اختصاصی میتواند منبع این API باشد.
API برای CRM و ERP
سفارش در سایت ثبت میشود و ERP جداست — یا CRM باید با حسابداری هماهنگ بماند.
سایت ← API ← ERP
یا: CRM ← API ← سیستم حسابداری — اطلاعات یکبار ثبت میشود و بین سیستمها هماهنگ میماند.
API برای شریک تجاری B2B
بهجای Excel و دسترسی دیتابیس، شریک فقط محصول، قیمت و موجودی موردنیاز خود را میبیند.
Partner ← API Key ← API
API برای داشبورد مدیریتی
داشبورد به چند منبع وصل نمیشود؛ منطق داده در یک API واحد جمع میشود.
چند منبع داده ← API ← Dashboard
به زبان خیلی ساده: شما میگویید اطلاعات الان کجاست، چه سیستمی باید از آن استفاده کند و قرار است چه کاری انجام دهد.
شروع ساده
شما سه چیز را مشخص میکنید — بقیه معماری با ما
اطلاعات الان کجاست؟
ممکن است داخل:
چه سیستمی باید از آن استفاده کند؟
مثلاً:
قرار است چه کاری انجام دهد؟
مثلاً:
یک API امن و مستند بین دیتابیس، داده استخراجشده و اپ، سایت، ERP یا شریک تجاری میسازیم — بدون اتصال مستقیم همه سیستمها به دیتابیس.
در یک نگاه
داده کجاست و چه سیستمی باید به آن وصل شود؟
-
شما میگویید
مثال: محصولات در PostgreSQL — اپ موبایل باید لیست را بگیرد
منبع داده، مصرفکننده و کار موردنظر — بدون سند فنی از قبل.
-
ما طراحی میکنیم
Endpoint، احراز هویت، سطح دسترسی، Webhook و OpenAPI مطابق پروژه.
-
تحویل
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 جدی طراحی شده است.
اپ و سایت همان دادهٔ بهروز را بگیرند
بدون کپی دستی و بدون اتصال مستقیم به دیتابیس — تیم محصول روی تجربه کاربر کار میکند، نه هماهنگی فایل.
- موبایل
- وباپ
- یک منبع داده
سفارش و موجودی بین سیستمها هماهنگ بماند
سایت، ERP و CRM از یک قرارداد مشترک استفاده میکنند؛ رویدادهای مهم با Webhook بهجای پیگیری دستی اعلام میشوند.
- ERP
- CRM
- Webhook
دسترسی محدود بدون Excel هفتگی
کلید API جدا، سقف درخواست و مستندات برای تیم فنی شریک — بدون افشای داده مالی یا مشتریان دیگر.
- API Key
- فقطخواندنی
- OpenAPI
رویداد لحظهای
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
کلید جدا و محدوده داده مشخص.
همگامسازی ERP
سفارش سایت ← ERP بدون ورود دستی.
داده استخراجشده
آخرین قیمت و موجودی بازار برای محصول شما.
داشبورد یکپارچه
چند منبع از یک API واحد.
تحویل
درگاه را چطور دریافت میکنید؟
همان قرارداد — به شکلی که تیم فنی و شریک واقعاً استقرار و استفاده میکنند.
REST JSON
مسیرهای نسخهدار با پاسخ یکسان در آزمایشی و اصلی.
OpenAPI
Swagger UI و خروجی برای تولید کد سمت مصرفکننده.
Webhook
سفارش، قیمت، موجودی یا پایان استخراج.
استقرار
سرور شما، داخل Django موجود یا میزبانی توافقشده.
فرایند
فرایند اجرای پروژه
-
شناخت اتصال
داده کجاست، چه کسی مصرف میکند، چه کاری باید انجام شود
-
طراحی قرارداد API
Endpoint، دسترسی، خطا، صفحهبندی و Versioning
-
نمونه اولیه
مسیر اصلی روی داده واقعی تست میشود
-
توسعه
Endpointها، Authentication و منطق پروژه
-
تست یکپارچگی
اتصال سیستم شما و مصرفکننده واقعی
-
تست عملکرد
در صورت نیاز، رفتار تحت بار
-
مستندات
OpenAPI و راهنمای مصرف
-
استقرار
محیط توافقشده — سرور شما یا میزبانی قراردادی
-
تحویل
تیم یا شریک فنی بر اساس مستندات استفاده میکند
تست فراتر از «Endpoint جواب میدهد»
قبل از تحویل سناریوهای واقعی بررسی میشوند:
Token اشتباهداده پیدا نشددرخواست بیش از حد
مقصد 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 همان قرارداد ثبت میشود؛ این ساختار فقط برای تصویرسازی شکل خروجی است.
/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
نسخه قرارداد فعال
داده نمایشی — ساختار نهایی در 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 بررسی میشوند.
درون سایت
- توسعه ربات و Scraper اختصاصی منبع داده قبل از لایه API
- اتوماسیون فرایندها و گردش کار کارهای خودکار بعد از دریافت یا تغییر داده
- توسعه پلتفرم اختصاصی وقتی API بخشی از Backend محصول است
- توسعه وب و نرمافزار اختصاصی وقتی API بین بخشهای یک محصول قرار میگیرد
- همه سرویسها فهرست کامل WebScraper.ir
منابع بیرونی
- OpenAPI Specification مرجع قرارداد مستندات
فنی
جزئیات فنی — برای تیم مهندسی و یکپارچهسازی
امنیت 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 لحاظ میشود.
حقوقی و حریم داده
داده طبق قرارداد و قوانین منبع مصرف میشود.
مسئولیت استفاده شریک از API در سازمان خودش است.
چه زمانی واقعاً به 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 یا دسترسی شریک تجاری.
خیر. کافی است بگویید داده کجاست، چه سیستمی قرار است مصرف کند و چه کاری باید انجام دهد.
بله. در بسیاری از پروژهها REST انتخاب پیشفرض است.
در پروژههایی که واقعاً نیاز داشته باشند، بله.
بسته به محدوده، OpenAPI، Swagger و نمونه Request/Response در تحویل قرار میگیرد.
روش احراز هویت بر اساس سناریو انتخاب میشود — API Key، Token یا JWT.
بله. سطح دسترسی بر اساس مصرفکننده، نقش یا داده تعریف میشود.
اگر امکان اتصال مناسب باشد بله — ابتدا معماری فعلی بررسی میشود.
بله، در صورت توافق روی زیرساخت شما مستقر میشود.
در پروژههایی که نیاز به رویداد لحظهای دارند، بله.
بله؛ یکی از کاربردهای اصلی این سرویس است.
بر اساس مصرف واقعی، زیرساخت و نیاز پروژه — نه عدد ثابت غیرواقعی.
در پروژههایی که حجم درخواست اهمیت دارد، تست عملکرد میتواند بخشی از تحویل باشد.
با Versioning و معماری درست از ابتدا، Endpointهای جدید مرحلهای اضافه میشوند.
گام بعد
بگویید داده کجاست و چه چیزی باید به آن وصل شود
برای شروع نیازی به سند فنی ندارید. ما بررسی میکنیم چه معماری مناسب است، چه سطح دسترسی لازم دارید و نسخه اول API دقیقاً چه چیزی باید تحویل دهد.
محصولات داخل PostgreSQL هستند و اپ موبایل باید آنها را نمایش دهد.
از چند سایت قیمت استخراج میکنیم و مشتری میخواهد از طریق API دریافت کند.
سفارشها داخل سایت هستند ولی باید به ERP منتقل شوند.
یک شریک تجاری باید فقط بخشی از موجودی و قیمتهای ما را ببیند.