اگر با توسعه وب و برنامهنویسی بکاند آشنا باشید، احتمالاً نام API و Django REST Framework را شنیدهاید. امروزه بسیاری از وبسایتها، اپلیکیشنهای موبایل و سامانههای تحت وب برای ارتباط بین بخشهای مختلف خود از API استفاده میکنند.
اما Django REST Framework چیست؟ و چرا بسیاری از توسعهدهندگان Django از آن برای ساخت API استفاده میکنند؟
Django REST Framework که معمولاً به صورت DRF شناخته میشود، مجموعهای از ابزارها برای ساخت Web API با استفاده از Django و Python است.
DRF به توسعهدهنده کمک میکند تا اطلاعات موجود در یک پروژه را به شکلی ساختاریافته در اختیار بخشهای دیگر مانند اپلیکیشن موبایل، فرانتاند یا سرویسهای خارجی قرار دهد.
در این مقاله بررسی میکنیم که Django REST Framework چیست، API چگونه کار میکند، DRF چه کاربردی دارد و چگونه میتوان با استفاده از آن API ساخت.
قبل از اینکه سراغ Django REST Framework برویم، بهتر است ابتدا بدانیم API چیست.
API مخفف عبارت Application Programming Interface است.
به زبان ساده، API یک رابط ارتباطی بین دو نرمافزار یا سیستم است.
برای مثال فرض کنید یک اپلیکیشن موبایل نیاز دارد لیست محصولات یک فروشگاه را نمایش دهد.
اپلیکیشن میتواند از طریق API اطلاعات محصولات را از سرور دریافت کند.
این ارتباط معمولاً به شکل زیر اتفاق میافتد:
اپلیکیشن یا فرانتاند
↓
API
↓
سرور
↓
پایگاه داده
API اطلاعات را دریافت، پردازش و در قالب مشخصی به سیستم درخواستدهنده ارسال میکند.
یکی از رایجترین فرمتها برای انتقال اطلاعات، JSON است.
REST یک سبک معماری برای طراحی API است.
در یک REST API معمولاً منابع مختلف پروژه از طریق URLهای مشخص در دسترس قرار میگیرند.
برای مثال یک فروشگاه اینترنتی میتواند APIهایی مانند موارد زیر داشته باشد:
/api/products/
/api/categories/
/api/users/
/api/orders/
هر Endpoint میتواند وظیفه مشخصی داشته باشد.
برای مثال:
این عملیات معمولاً با استفاده از متدهای HTTP انجام میشوند.
مهمترین آنها عبارتاند از:
برای دریافت اطلاعات.
مثال:
GET /api/products/
برای ارسال و ایجاد اطلاعات جدید.
برای ویرایش اطلاعات.
برای حذف اطلاعات.
Django REST Framework یا DRF یک فریم ورک قدرتمند برای ساخت API در پروژههای Django است.
اگر در پروژه Django بخواهید اطلاعات را به صورت API در اختیار یک اپلیکیشن موبایل، فرانتاند یا سرویس دیگر قرار دهید، DRF میتواند ابزارهای موردنیاز برای انجام این کار را فراهم کند.
DRF امکانات مختلفی برای توسعه API ارائه میدهد، از جمله:
این ابزارها باعث میشوند ساخت API ساختارمندتر و مدیریت آن سادهتر شود.
ساخت API از ابتدا میتواند نیازمند پیادهسازی بخشهای مختلفی باشد.
برای مثال باید مشخص کنید:
Django REST Framework برای بسیاری از این نیازها ابزارهای آماده و قابل توسعه ارائه میدهد.
البته استفاده از ابزار آماده به این معنا نیست که API به صورت خودکار امن یا بدون مشکل خواهد بود؛ طراحی صحیح، اعتبارسنجی، مجوزها و تنظیمات پروژه همچنان اهمیت زیادی دارند.
یکی از مهمترین مفاهیم در DRF، Serializer است.
Serializer وظیفه دارد دادههای پیچیده را به فرمتی تبدیل کند که بتوان آن را از طریق API ارسال کرد.
برای مثال ممکن است اطلاعات یک محصول در پایگاه داده شامل موارد زیر باشد:
Serializer میتواند این اطلاعات را به JSON تبدیل کند.
به طور ساده:
Django Model
↓
Serializer
↓
JSON Response
↓
اپلیکیشن یا فرانتاند
Serializer همچنین میتواند دادههای ورودی را بررسی و اعتبارسنجی کند.
View مشخص میکند که API چگونه به درخواست کاربران پاسخ دهد.
برای مثال میتوان یک View ایجاد کرد که لیست محصولات را نمایش دهد.
در DRF روشهای مختلفی برای ساخت View وجود دارد، از جمله:
انتخاب هر روش به نیاز و ساختار پروژه بستگی دارد.
برای پروژههای ساده ممکن است یک روش کافی باشد، اما در پروژههای بزرگتر استفاده از ساختارهای مناسبتر باعث مدیریت بهتر کد میشود.
ViewSet یکی از ابزارهای کاربردی Django REST Framework است.
با استفاده از ViewSet میتوان عملیات مختلف مربوط به یک منبع را در یک ساختار مشخص مدیریت کرد.
برای مثال برای یک مدل محصول میتوان عملیات زیر را مدیریت کرد:
این کار باعث میشود ساختار API منظمتر شود.
Router به مدیریت URLهای مربوط به ViewSet کمک میکند.
به جای اینکه برای هر عملیات به صورت دستی URL تعریف کنیم، Router میتواند مسیرهای موردنیاز را بر اساس ViewSet ایجاد کند.
این قابلیت در پروژههایی که تعداد Endpointهای بیشتری دارند میتواند باعث مرتبتر شدن ساختار URLها شود.
در بسیاری از APIها لازم است مشخص شود کاربر چه کسی است.
برای مثال ممکن است بعضی APIها فقط برای کاربران واردشده در دسترس باشند.
DRF از روشهای مختلف احراز هویت پشتیبانی میکند.
بسته به معماری پروژه میتوان از روشهایی مانند:
استفاده کرد.
انتخاب روش مناسب باید بر اساس نوع پروژه، معماری سیستم و نیازهای امنیتی انجام شود.
Authentication مشخص میکند کاربر چه کسی است.
اما Permission مشخص میکند کاربر اجازه انجام چه کاری را دارد.
برای مثال:
مدیریت صحیح Permission یکی از بخشهای مهم طراحی API است.
در پروژههایی که حجم داده زیاد است، ارسال تمام اطلاعات در یک درخواست منطقی نیست.
برای مثال ممکن است یک فروشگاه هزاران محصول داشته باشد.
Pagination اطلاعات را به چند بخش تقسیم میکند.
مثلاً:
/api/products/?page=1
/api/products/?page=2
/api/products/?page=3
این کار میتواند مدیریت و نمایش دادهها را بهتر کند.
Django REST Framework در پروژههای مختلفی قابل استفاده است.
یکی از مهمترین کاربردهای DRF، ایجاد API برای اپلیکیشنهای موبایل است.
یک اپلیکیشن Android یا iOS میتواند اطلاعات موردنیاز خود را از طریق API دریافت کند.
برای مثال:
اپلیکیشن Flutter
↓
API
↓
Django REST Framework
↓
پایگاه داده
در بسیاری از پروژهها فرانتاند و بکاند از یکدیگر جدا هستند.
برای مثال ممکن است فرانتاند با فناوریهایی مانند React توسعه داده شود و بکاند با Django.
در این شرایط API نقش پل ارتباطی بین دو بخش را دارد.
در وباپلیکیشنهای پیچیده ممکن است بخشهای مختلف سیستم نیاز داشته باشند اطلاعات را از طریق API دریافت یا ارسال کنند.
DRF میتواند برای ساخت این ارتباط مورد استفاده قرار بگیرد.
گاهی لازم است یک سیستم با سرویس یا نرمافزار دیگری ارتباط برقرار کند.
برای مثال:
API میتواند نقش مهمی در ایجاد این ارتباط داشته باشد.
برخی از مهمترین مزایای DRF عبارتاند از:
با این حال، انتخاب DRF نیز باید بر اساس نیاز پروژه انجام شود.
Django و Django REST Framework یکسان نیستند.
Django یک فریم ورک برای توسعه وب با Python است.
اما Django REST Framework مجموعهای از ابزارها است که روی Django استفاده میشود تا ساخت API سادهتر و ساختارمندتر شود.
به زبان ساده:
Python
↓
Django
↓
Django REST Framework
↓
REST API
بنابراین برای شروع کار با DRF بهتر است ابتدا با مفاهیم Django آشنا باشید.
مسیر پیشنهادی برای یادگیری DRF میتواند به شکل زیر باشد:
ابتدا باید با مفاهیم پایه Python آشنا شوید.
قبل از ورود به DRF بهتر است مفاهیمی مانند:
را در Django یاد بگیرید.
مفاهیمی مانند:
را یاد بگیرید.
در این مرحله میتوانید سراغ مفاهیمی مانند:
بروید.
بعد از ساخت APIهای اولیه، باید با مدیریت کاربران و سطح دسترسی آشنا شوید.
بهترین روش برای یادگیری، ساخت پروژه واقعی است.
برای مثال میتوانید یک API برای:
ایجاد کنید.
پاسخ به نیاز پروژه بستگی دارد.
اگر پروژه شما نیاز دارد اطلاعات را بین:
منتقل کند، استفاده از API میتواند بخشی از معماری پروژه باشد.
Django REST Framework یکی از ابزارهایی است که میتوان برای ساخت API در اکوسیستم Django از آن استفاده کرد.
در پروژههای واقعی، API فقط به معنای نمایش چند داده به صورت JSON نیست.
یک API حرفهای ممکن است نیاز داشته باشد:
به همین دلیل یادگیری مفاهیم پایه کافی نیست و تجربه عملی در طراحی API اهمیت زیادی دارد.
یکی از کاربردهای مهم DRF، توسعه سامانههای اختصاصی است.
برای مثال یک کسبوکار ممکن است نیاز داشته باشد:
در چنین شرایطی API میتواند بخش مهمی از معماری پروژه باشد.
با استفاده از Django و Django REST Framework میتوان ساختار API را بر اساس نیازهای پروژه طراحی و توسعه داد.
در پاسخ به سؤال «Django REST Framework چیست؟» میتوان گفت:
Django REST Framework یا DRF مجموعهای از ابزارها برای ساخت Web API با استفاده از Django و Python است.
DRF امکانات مختلفی مانند Serializer، ViewSet، Router، Authentication، Permission و Pagination را در اختیار توسعهدهنده قرار میدهد و میتواند برای ساخت API در وبسایتها، اپلیکیشنهای موبایل و سامانههای اختصاصی استفاده شود.
اگر قصد یادگیری Django REST Framework را دارید، بهتر است ابتدا با Python و سپس Django آشنا شوید و بعد وارد مباحث API و DRF شوید.
در نهایت، بهترین راه یادگیری ساخت API، اجرای پروژههای واقعی است؛ زیرا در پروژههای عملی با مفاهیمی مانند طراحی ساختار API، اعتبارسنجی، احراز هویت، سطح دسترسی و مدیریت دادهها روبهرو خواهید شد.