
REST API چیست؟ راهنمای جامع و کاربردی برای مبتدیان و حرفهایها
فهرست مطالب
- API و REST API چیست؟
- تاریخچه REST API
- REST API چطور کار میکند؟
- مزایای REST API
- معایب REST API
- ابزارهای توسعه و تست REST API
- کاربردهای REST API
- چه کسانی باید REST API یاد بگیرند؟
- خروجی REST API
- تفاوت REST API با SOAP و GraphQL
- امنیت در REST API
- نمونه پروژه REST API با JavaScript
- آموزش طراحی REST API
- نکات مهم در طراحی RESTful API
- نمونه پروژه REST API با PHP
- مستندسازی با Swagger
- نتیجهگیری
بخش اول: API و REST API چیست؟
فرض کن داری توی یه کافه دنج با دوستت چت میکنی و تصمیم میگیری یه کیک شکلاتی خوشمزه سفارش بدی. تو به گارسون میگی چی میخوای (درخواست)، گارسون سفارش رو به آشپزخونه میبره (ارتباط)، آشپز کیک رو آماده میکنه و گارسون اون رو جلوت میذاره (پاسخ). حالا اگه بخوای همین کار رو بین دو برنامه کامپیوتری انجام بدی—مثلاً اپلیکیشن موبایلت بخواد از یه سرور اطلاعات آبوهوا بگیره—به چیزی به اسم API یا رابط برنامهنویسی نرمافزار نیاز داری. API مثل همون گارسونه، یه میانجی هوشمند که به برنامهات کمک میکنه با دنیای بیرون (سرورها، دیتابیسها یا سرویسهای دیگه) ارتباط برقرار کنه. بدون API، برنامهات مثل یه جزیره جداافتاده میمونه که هیچ اطلاعاتی نمیتونه رد و بدل کنه! برای اطلاعات بیشتر درباره API، میتونی به مستندات Mozilla سر بزن.
حالا بریم سراغ REST API. این یه نوع خاص از APIه که بر اساس معماری REST (Representational State Transfer) کار میکنه. این معماری رو روی فیلدینگ، یکی از بانیهای پروتکل HTTP, توی سال ۲۰۰۰ توی رساله دکتراش معرفی کرد. هدفش این بود که ارتباط بین سیستمها رو به شکلی ساده، قابل اعتماد و استاندارد دربیاره. REST API از پروتکل HTTP (که هر روز توی مرورگرت باهاش سر و کار داری) استفاده میکنه و دادهها رو معمولاً با فرمتهای سبک مثل JSON یا گاهی XML جابهجا میکنه. اگه بخوام واضحتر بگم، REST API مثل یه دستیار چندکارهست که به برنامهات اجازه میده با سرورها حرف بزنه، داده بگیره و حتی تغییراتی اعمال کنه، بدون اینکه لازم باشه خودت مستقیماً با پیچیدگیهای پشت صحنه درگیر بشی. برای جزئیات بیشتر درباره REST، نگاه کن به وبسایت RESTful API.
چرا باید REST API رو یاد بگیری؟ یه فرصت طلایی توی ۲۰۲۵! این روزها بیشتر اپلیکیشنها و وبسایتهایی که هر روز باهاشون کار میکنی—مثل اینستاگرام که فیدت رو بهروز میکنه، نتفلیکس که پیشنهاد فیلم میده، یا حتی گوگل مپس که مسیرت رو نشون میده—همه از REST API برای انتقال داده استفاده میکنن. این یعنی اگه میخوای توی برنامهنویسی بدرخشی، یادگیری آموزش طراحی REST API مثل اینه که یه مهارت کلیدی رو یاد بگیری که تو بازار کار ۲۰۲۵ خیلی پرتقاضاست. چه بخوای فریلنسر بشی، تو یه شرکت کار کنی یا حتی استارتاپ خودتو راه بندازی، مسلط بودن به REST API در کارت تفاوت بزرگی ایجاد میکنه!
بخش دوم: تاریخچه REST API
قبل از اینکه REST وارد صحنه بشه، دنیای وبسرویسها تحت سلطه پروتکلهایی مثل SOAP بود. SOAP یه روش قدیمیتر برای ارتباط بین سیستمها بود که از فرمت سنگین XML استفاده میکرد. این فرمت برای سیستمهای بزرگ مثل بانکها، بیمارستانها یا شرکتهای دولتی که نیاز به امنیت بالا و ساختار پیچیده داشتن، عالی بود، ولی برای توسعهدهندههای معمولی که میخواستن سریع و ساده کار کنن، یه کابوس واقعی بود! انتقال دادهها با SOAP کند بود، مستنداتش پیچیده بود و نیاز به دانش عمیق فنی داشت. توی اون سالها (دهه ۱۹۹۰ و اوایل ۲۰۰۰)، اینترنت هنوز توی حال و هوای اولیهش بود و نیاز به یه راهحل سریع تر حس میشد. برای اطلاعات بیشتر درباره SOAP، میتونی به مستندات W3C نگاه کن.
توی سال ۲۰۰۰، روی فیلدینگ، سبک معماری REST رو معرفی کرد که بر پایه اصول ساده HTTP (مثل GET، POST، PUT و DELETE) بنا شده بود. ایدهش این بود که با حذف پیچیدگیهای اضافی و استفاده از استانداردهای موجود، ارتباط بین کلاینت و سرور رو روانتر کنه. کمکم با گسترش اینترنت، ظهور گوشیهای هوشمند و اپلیکیشنهای موبایل، REST API خودش رو نشون داد. توی دهه ۲۰۱۰، شرکتهای بزرگی مثل گوگل (با API مپس)، آمازون (با سرویسهای ابری) و توییتر (برای فیدها) از REST استفاده کردن و محبوبیتش روزبهروز بیشتر شد. حالا توی ۲۰۲۵، REST API دیگه فقط یه ابزار نیست، یه استاندارد جهانی شده که توی پروژههای کوچک و بزرگ، از استارتاپها تا غولهای تکنولوژی، جا خوش کرده!
بخش سوم: REST API چطور کار میکنه؟ قدم به قدم باهات میام!
بیا یه سناریو واقعی رو با هم تصور کنیم: داری توی اپلیکیشن آبوهوا وضعیت تهران رو چک میکنی. اینجوری پیش میره و من با جزئیات برات توضیح میدم:
درخواست (Request): اپلیکیشن موبایلت با یه متد HTTP مثل GET به سرور میگه: "وضعیت آبوهوای تهران رو برام بیار!" این درخواست معمولاً شامل یه آدرس URL مثل https://api.weather.com/tehran
هست که توش پارامترهایی مثل تاریخ یا واحد دما (سانتیگراد/فارنهایت) هم میتونه باشه.
پردازش سرور: سرور این درخواست رو دریافت میکنه، میره توی دیتابیسش (مثلاً یه پایگاه داده ابری مثل MongoDB) نگاه میکنه، دادههای آبوهوا رو از منابع زنده (مثل ایستگاههای هواشناسی) جمعآوری میکنه، پردازشش میکنه (مثلاً میانگین دما رو حساب میکنه) و آماده میکنه.
پاسخ (Response): سرور یه فایل JSON رو برمیگردونه، مثلاً:
{
"city": "تهران",
"temperature": 28,
"condition": "آفتابی",
"humidity": 45,
"wind_speed": "12 km/h",
"last_updated": "2025-07-09T12:00:00Z",
"forecast": [
{ "day": "فردا", "temp": 30, "condition": "نیمهابری" }
]
}
این پاسخ شامل جزئیات کامل هست که اپ میتونه ازش استفاده کنه.
نمایش داده: اپلیکیشن این دادهها رو میگیره، با یه رابط کاربری جذاب (مثلاً با REST API و توسعه Frontend) پردازشش میکنه و بهت نشون میده—مثلاً یه گراف دما یا آیکون آفتابی!
این فرآیند به خاطر پروتکل REST و ساختار سادهش ممکن میشه. REST API بر اساس یه سری اصول کار میکنه که بهش میگن معماری RESTful چیست؟ این اصول شامل:
- Client-Server: جداسازی کامل بین رابط کاربری (کلاینت) و منطق سرور.
- Stateless: هر درخواست مستقل هست و سرور نیازی به یادآوری اطلاعات قبلی نداره (مثلاً سبد خریدت رو خودش نگه نمیداره).
- Cacheable: پاسخها میتونن کش بشن تا بار سرور کم بشه و سرعت بالا بره.
- Uniform Interface: یه رابط یکنواخت که همه جا به یه شکل کار میکنه.
جدول متدهای HTTP توی REST API - با مثالهای واقعی
متد | کاربرد | مثال واقعی | جزئیات اضافی |
---|---|---|---|
GET | گرفتن داده | گرفتن لیست محصولات یه فروشگاه مثل دیجیکالا | میتونی با پارامترهایی مثل ?category=electronics فیلتر کنی |
POST | ارسال داده جدید | ثبتنام یه کاربر جدید توی یه سایت | دادهها (مثل نام و ایمیل) توی بدنه درخواست میاد |
PUT | بهروزرسانی کامل | ویرایش کامل اطلاعات پروفایل توی لینکدین | کل داده رو جایگزین میکنه |
PATCH | بهروزرسانی جزئی | تغییر فقط ایمیل کاربر توی پروفایل | فقط بخشی از داده (مثلاً فقط ایمیل) عوض میشه |
DELETE | حذف داده | حذف یه نظر از سایت مثل آپارات | معمولاً با یه ID خاص (مثلاً /comments/123 ) کار میکنه |
بخش چهارم: مزایای REST API
بیا با جزئیات بیشتر ببینیم چرا REST API اینقدر محبوب شده:
سادگی: چون از پروتکل HTTP استفاده میکنه—همین چیزی که هر روز با مرورگرت باهاش کار میکنی—یادگیریش برای همه آسونه. حتی اگه تازهکار باشی و تازه شروع کرده باشی به آموزش REST API، با چند تا مثال عملی میتونی دستت راه بیفته. مثلاً با یه دوره ساده آنلاین از سایتهایی مثل Udemy, میتونی توی چند هفته یه API بسازی!
انعطافپذیری: یکی از بهترین ویژگیهاش اینه که میتونی با هر زبانی مثل JavaScript (برای وب)، Python (برای دیتا ساینس) یا PHP (برای سیستمهای قدیمی) توسعه API کنی. این یعنی اگه با زبون خاصی راحتتری، میتونی همون رو انتخاب کنی و بازم با REST کار کنی.
مقیاسپذیری بالا: به خاطر Stateless بودن، سرورها میتونن بار رو بین خودشون تقسیم کنن. مثلاً اگه یه فروشگاه آنلاین مثل آمازون یه میلیون کاربر همزمان داشته باشه، با اضافه کردن سرورهای بیشتر، سیستمش بدون مشکل کار میکنه. این برای استارتاپهایی که میخوان رشد کنن، یه مزیت عظیمه.
سرعت: فرمت JSON به خاطر سبکی و ساختار منظمش، انتقال دادهها رو خیلی سریعتر از فرمتهای قدیمی مثل XML میکنه. مثلاً یه درخواست JSON ممکنه فقط چند کیلوبایت باشه، در حالی که XML میتونه چند برابر بزرگتر بشه.
پشتیبانی گسترده: ابزارهایی مثل Postman (برای تست)، فریمورکهایی مثل Express.js (برای جاوااسکریپت) و سرویسهای ابری مثل AWS API Gateway ازش حمایت میکنن. حتی توی ۲۰۲۵، با رشد هوش مصنوعی، ابزارهای جدید مثل Copilot هم دارن به توسعه REST API کمک میکنن.
بخش پنجم: معایب REST API
هر تکنولوژی خوبی یه سری محدودیت هم داره. بیایم با صداقت همهچیز رو بشکافیم:
Over-fetching و Under-fetching: گاهی اوقات API دادههای اضافی میفرسته که لازم نداری (Over-fetching) یا برعکس، دادهای که میخوای رو نمیده (Under-fetching). مثلاً اگه فقط اسم کاربر رو میخوای، ممکنه کل اطلاعاتش (مثل آدرس و شماره تلفن) بیاد، که باعث هدر رفتن منابع میشه. یا اگه فقط دمای آبوهوا رو میخوای، ممکنه API فقط شهر رو برگردونه!
مدیریت نسخهها: وقتی APIت بهروزرسانی میشه، باید REST API Versioning چگونه انجام میشود؟ رو بدونی. مثلاً اگه یه ویژگی جدید اضافه کنی، نمیتونی کل API رو عوض کنی چون ممکنه برنامههای قدیمی خراب بشن. اینجا از روشهایی مثل /v1/users
و /v2/users
استفاده میکنن که مدیریتش یه کم چالشبرانگیزه.
پیچیدگی در حالتها: چون REST Statelessه، یعنی سرور هر درخواست رو جداگانه میبینه و حافظهای از درخواست قبلی نگه نمیداره. این برای کارهایی مثل مدیریت سبد خرید توی یه فروشگاه آنلاین که نیاز به ردیابی داره، یه مشکل ایجاد میکنه و باید با کوکیها یا توکنها حلش کنی.
محدودیت در درخواستهای پیچیده: برای دادههای خیلی درهمتنیده (مثلاً یه لیست پیچیده از محصولات با نظرات و قیمتها)، REST به تنهایی ممکنه کافی نباشه و نیاز به ابزارهایی مثل GraphQL پیدا کنی که دادهها رو دقیقتر تحویل میده.
بخش ششم: ابزارهای توسعه و تست REST API
برای اینکه یه RESTful API بسازی یا تست کنی، این ابزارها مثل یه جعبه ابزار کامل به کارت میان. بیایم با جزئیات بیشتر بررسیشون کنیم:
نوع ابزار | نمونهها | کاربرد | جزئیات اضافی |
---|---|---|---|
تست API | Postman, Insomnia, SoapUI | ارسال درخواست و چک کردن پاسخها | Postman حتی تستهای خودکار هم پشتیبانی میکنه |
مستندسازی | Swagger, OpenAPI, Redoc | ساخت مستند خودکار برای API | Swagger UI یه رابط گرافیکی زیبا داره |
فریمورکها | Express.js, Django REST Framework | سرعت بخشیدن به توسعه API | Express برای جاوااسکریپت و Django برای پایتون عالیه |
میزبانی | AWS API Gateway, Heroku, Firebase | میزبانی و مدیریت وب سرویس REST | AWS قابلیت مقیاسپذیری خودکار داره |
تست REST API با Postman - یه تجربه عملی Postman مثل یه آزمایشگاه شخصیه که میتونی باهاش درخواست بفرستی و پاسخ رو لحظهای ببینی. مثلاً:
- URL:
https://api.example.com/users
- متد: GET
- هدرها:
Authorization: Bearer token123
- پاسخ: یه لیست JSON مثل
[{ "id": 1, "name": "علی" }]
میتونی اسکریپتهای تست بنویسی یا حتی درخواستها رو بهصورت مجموعه (Collection) ذخیره کنی تا بعداً استفاده کنی.
بخش هفتم: کاربردهای REST API
REST API مثل یه ابرقهرمانه که توی همه جنبههای زندگی دیجیتالیمون حضور داره! بیایم چندتا مثال واقعی و عمیق بزنیم:
اپلیکیشنهای موبایل: مثلاً وقتی توی اپ بانکی تراکنش میکنی، از استفاده از REST API در برنامههای موبایل استفاده میشه. بانک یه API داره که اطلاعات حساب، تراکنشها و اعلانها رو به اپ میفرسته.
وبسایتها: فروشگاههای آنلاین مثل دیجیکالا یا علیبابا با REST API محصولات، قیمتها و نظرات کاربرها رو بهت نشون میدن. حتی وقتی سبد خریدت رو آپدیت میکنی، یه درخواست POST به API میفرسته.
اینترنت اشیا (IoT): لامپ هوشمندت با کاربرد REST API در اینترنت اشیا روشن میشه. مثلاً با یه درخواست PUT به آدرس http://lamp-api.com/light
میتونی نورش رو تنظیم کنی.
برنامهنویسی اندروید: برای اتصال یه اپ اندرویدی به سرور (مثلاً برای چت یا بازی)، REST API یه راه مطمئن و استاندارد فراهم میکنه.
بخش هشتم: چه کسانی باید REST API یاد بگیرن؟
توسعهدهندگان فرانتاند: برای ارتباط با سرور و گرفتن دادهها (مثلاً لود کردن فید اینستاگرام)، باید بفهمن چطور با REST API و توسعه Frontend کار کنن.
توسعهدهندگان بکاند: برای طراحی API و ساخت وب سرویس REST، مسلط بودن به REST یه نیاز ضروریه.
مبتدیان: با REST API برای مبتدیان شروع کن—با یه پروژه کوچک مثل یه API برای مدیریت کتابها، میتونی پایهات رو محکم کنی.
فریلنسرها: برای پروژههای دورکار، مهارت توسعه API مثل یه کارت ویزیت حرفهای عمل میکنه که مشتریها رو جذب میکنه.
بخش نهم: خروجی REST API - دادهها چطور میرسن؟
دادهها معمولاً توی این فرمتها به دستت میرسه:
فرمت | ویژگیها | مثال استفاده | جزئیات اضافی |
---|---|---|---|
JSON | سبک، قابل خواندن، محبوب | اپلیکیشنهای وب و موبایل | پشتیبانی از ساختارهای پیچیده مثل آرایه و شیء |
XML | سنگینتر، برای سیستمهای قدیمی | بانکها و سازمانها | هنوز توی استانداردهای سازمانی مثل SWIFT استفاده میشه |
JSON vs XML در APIها - یه جنگ قدیمی! JSON به خاطر سبکی، سادگی و پشتیبانی از همه زبانهای مدرن توی ۲۰۲۵ غالب شده. مثلاً:
{
"user": {
"id": 1,
"name": "محمد",
"email": "mohammad@example.com",
"address": {
"city": "تهران",
"zip": "12345"
}
}
}
در مقابل، XML ساختار سفتوسختی داره و بیشتر توی سیستمهای قدیمی مثل بانکها یا نرمافزارهای سازمانی استفاده میشه:
1
محمد
mohammad@example.com
تهران 12345
JSON سریعتر parse میشه و برای اپلیکیشنهای موبایل و وب ایدهآله.
بخش دهم: تفاوت REST API با SOAP و GraphQL
بیا با جزئیات بیشتر مقایسه کنیم:
ویژگی | REST API | SOAP | GraphQL |
---|---|---|---|
پروتکل | HTTP | HTTP/SMTP | HTTP |
فرمت | JSON/XML | XML | JSON |
انعطافپذیری | متوسط (بسته به طراحی) | کم (ساختار سفتوسخت) | خیلی بالا (داده سفارشی) |
یادگیری | آسون (با چند روز تمرین) | سخت (نیاز به دانش عمیق) | متوسط (نیاز به درک ساختار) |
کاربرد | وب و موبایل (عمومی) | سیستمهای بزرگ (بانکها) | دادههای پیچیده (فیسبوک) |
تفاوت REST و SOAP - یه نبرد تاریخی SOAP برای سیستمهایی طراحی شده که امنیت و ساختار خیلی بالایی میخوان، مثل تراکنشهای بانکی که باید با استانداردهایی مثل WS-Security کار کنن. ولی REST به خاطر سادگی و سرعتش برای پروژههای مدرن مثل اپلیکیشنهای موبایل و وبسایتها بهتره. تفاوت REST API و SOAP API توی اینه که SOAP یه پروتکل کامل با قوانین سختگیرانهست، در حالی که REST فقط یه سبک معماریه که انعطاف بیشتری داره.
بخش یازدهم: امنیت در REST API - یه API امن بساز!
امنیت توی API امن مثل قفل یه گاوصندوق باارزشه. این نکات رو با دقت رعایت کن:
API Authentication و Authorization: از استفاده از OAuth در REST API (برای ورود با گوگل) یا JSON Web Token (JWT) (برای توکنهای امن) استفاده کن. مثلاً یه توکن JWT میتونه اینجوری باشه:
{
"sub": "user123",
"exp": 1698777600,
"role": "admin"
}
برای اطلاعات بیشتر به وبسایت JWT سر بزن.
API Rate Limiting چیست؟: تعداد درخواستها رو محدود کن (مثلاً ۱۰۰۰ درخواست در ساعت) تا جلوی حملات DDoS یا سوءاستفاده رو بگیری. ابزارهایی مثل NGINX این کار رو خوب انجام میدن.
HTTPS: همیشه از رمزنگاری استفاده کن تا دادهها بین کلاینت و سرور امن بمونن. بدون HTTPS، هکرها میتونن اطلاعاتت رو بدزدن!
بهترین استانداردهای طراحی REST API: رمزگذاری دادهها با الگوریتمهایی مثل AES, اعتبارسنجی ورودیها (مثلاً چک کردن ایمیل معتبر) و جلوگیری از تزریق کد (SQL Injection) رو جدی بگیر.
بخش دوازدهم: نمونه پروژه REST API با JavaScript - یه پروژه عملی
بیا یه API ساده با Node.js بسازیم:
const express = require('express');
const app = express();
app.get('/api/users', (req, res) => {
const users = [
{ id: 1, name: 'علی', email: 'ali@example.com' },
{ id: 2, name: 'رضا', email: 'reza@example.com' }
];
res.json(users);
});
app.listen(3000, () => console.log('API running on port 3000'));
حالا میتونی این رو با restful api javascript گسترش بدی و متدهای دیگه مثل POST رو اضافه کنی. مثلاً برای ثبت کاربر جدید:
app.post('/api/users', (req, res) => {
const newUser = req.body;
users.push(newUser);
res.status(201).json(newUser);
});
نمونه با Python (Django REST) - یه افزونه باحال
from rest_framework import viewsets
from .models import User
from .serializers import UserSerializer
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
def perform_create(self, serializer):
serializer.save(created_by=self.request.user)
برای اطلاعات بیشتر درباره Node.js و Django نگاه کن.
بخش سیزدهم: آموزش طراحی REST API
برای آموزش طراحی و پیادهسازی REST API, این مراحل رو با جزئیات دنبال کن:
- نیازسنجی: اول تصمیم بگیر چی میخوای بسازی. مثلاً یه API برای مدیریت کتابها با فیلدهایی مثل عنوان، نویسنده و قیمت.
- طراحی: ساختار RESTful web service رو مشخص کن. مثلاً:
/books
برای لیست کتابها/books/1
برای جزئیات کتاب با ID ۱
- کدنویسی: از فریمورکهایی مثل Express.js (برای جاوااسکریپت) یا Django (برای پایتون) استفاده کن.
- تست: با معرفی ابزارهای تست REST API مثل Postman, هر متد رو چک کن. مثلاً یه درخواست GET رو با کد ۲۰۰ تست کن.
- مستندسازی: با Swagger مستند بساز تا کاربرات بفهمن چطور از APIت استفاده کنن.
بخش چهاردهم: نکات مهم در طراحی RESTful API - راهنمایی حرفهای
بهترین روشهای توسعه REST API: از کش استفاده کن (مثلاً با Redis) تا سرعت بالا بره. همچنین پاسخها رو فشرده کن (با Gzip) تا پهنای باند کمتری مصرف بشه.
JSON vs XML: همیشه JSON API رو ترجیح بده مگر اینکه با سیستمهای قدیمی (مثل بانکها) کار کنی که XML نیاز دارن.
بهینهسازی عملکرد REST API: فشردهسازی دادهها، کاهش تعداد درخواستها (با ترکیب endpointها) و استفاده از CDN رو امتحان کن.
REST API Versioning چگونه انجام میشود؟: از /v1/
یا هدرهایی مثل Accept: application/vnd.api.v1+json
استفاده کن تا تغییرات رو مدیریت کنی.
بخش پانزدهم: نمونه پروژه REST API با PHP - حالا نوبت PHPه! یه تجربه عمیق
PHP هنوز توی توسعه وب، مخصوصاً برای پروژههای قدیمی یا سیستمهای مدیریت محتوا مثل وردپرس, خیلی پرطرفداره. بیایم یه API ساده با PHP بسازیم:
کد نمونه REST API با PHP - قدم به قدم یه فایل به اسم api.php
بساز و این کد رو بذار:
1, 'name' => 'علی', 'email' => 'ali@example.com'],
['id' => 2, 'name' => 'مهدی', 'email' => 'mehdi@example.com']
];
// چک کردن متد درخواست
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
// فیلتر کردن بر اساس ID (اگه موجود باشه)
$id = isset($_GET['id']) ? (int)$_GET['id'] : null;
if ($id) {
$user = array_filter($users, fn($u) => $u['id'] === $id);
echo json_encode(array_values($user) ?: ['error' => 'کاربر یافت نشد']);
} else {
echo json_encode($users);
}
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
$data = json_decode(file_get_contents('php://input'), true);
$newUser = ['id' => count($users) + 1, 'name' => $data['name'], 'email' => $data['email']];
$users[] = $newUser;
http_response_code(201); // Created
echo json_encode($newUser);
} else {
http_response_code(405); // Method Not Allowed
echo json_encode(['error' => 'فقط GET و POST مجاز است']);
}
?>
توضیحات کد - با جزییات
header('Content-Type: application/json')
: به سرور میگه خروجی JSONه و مرورگر یا کلاینت میفهمه چطور داده رو پردازش کنه.$_SERVER['REQUEST_METHOD']
: متد درخواست رو چک میکنه (GET برای گرفتن داده، POST برای ارسال).json_decode(file_get_contents('php://input'))
: دادههای ارسالی از کلاینت (مثلاً از Postman) رو میخونه.http_response_code(201)
: وقتی کاربر جدید ثبت میشه، کد ۲۰۱ میفرسته که نشوندهنده ایجاد موفقیتآمیز منابع جدیده.
نکات برای rest api php - یه راهنمای کامل
- از فریمورکهایی مثل Laravel (با بسته Lumen برای API) یا Slim استفاده کن تا کار راحتتر بشه. مثلاً توی Laravel میتونی با یه خط کد رابط REST بسازی.
- امنیت رو با اعتبارسنجی ورودی (مثلاً با فیلتر کردن ایمیل) و رمزنگاری (مثلاً با
password_hash
) رعایت کن. - برای ذخیره دادهها، به جای آرایه، از دیتابیس مثل MySQL استفاده کن و با PDO ارتباط برقرار کن.
بخش شانزدهم: مستندسازی با Swagger - APIت رو شفاف و حرفهای کن!
یکی از مهمترین بخشها توی چگونه REST API را مستند کنیم؟, استفاده از ابزارهایی مثل Swagger (یا OpenAPI) هست. Swagger یه راه فوقالعاده برای مستندسازی خودکار APIته که هم برای تو بهعنوان توسعهدهنده و هم برای کاربرات (مثلاً کلاینتهایی که از APIت استفاده میکنن) مفیده. بیایم با جزئیات بیشتر بشناسیمش!
Swagger چیه؟ - یه توضیح جامع Swagger یه فریمورک متنباز هست که بهت اجازه میده APIت رو با زبون ساده و قابل فهم برای همه مستند کنی. این مستند شامل چیزای زیادی مثل:
- توضیح متدهای HTTP (GET، POST، PUT و ...)
- پارامترها (مثلاً
user_id
یاtoken
) - پاسخها (مثلاً کد ۲۰۰ برای موفقیت یا ۴۰۴ برای پیدا نشدن)
- نمونههای JSON برای هر درخواست و پاسخ
توی ۲۰۲۵، با رشد پروژههای تیمی و دورکار، مستندسازی با Swagger به یه استاندارد تبدیل شده چون دیگه لازم نیست ساعتها وقت بذاری و دستی بنویسی—همهچیز خودکار میشه!
یه نمونه مستند Swagger - با جزئیات فرض کن API کاربرهات رو داری مستند میکنی. یه فایل swagger.json
بساز و این رو بذار:
{
"openapi": "3.0.0",
"info": {
"title": "API کاربران - نسخه 1.0.0",
"description": "یک API برای مدیریت کاربران با قابلیتهای GET و POST",
"version": "1.0.0",
"contact": {
"name": "پشتیبانی API",
"email": "support@example.com"
}
},
"paths": {
"/users": {
"get": {
"summary": "گرفتن لیست همه کاربران",
"description": "این endpoint لیست همه کاربران ثبتشده را برمیگرداند. میتوانید با پارامتر id فیلتر کنید.",
"parameters": [
{
"name": "id",
"in": "query",
"description": "شناسه کاربر برای فیلتر کردن",
"required": false,
"schema": { "type": "integer" }
}
],
"responses": {
"200": {
"description": "موفق - لیست کاربران",
"content": {
"application/json": {
"example": [
{ "id": 1, "name": "علی", "email": "ali@example.com" },
{ "id": 2, "name": "مهدی", "email": "mehdi@example.com" }
]
}
}
},
"404": {
"description": "کاربری یافت نشد",
"content": {
"application/json": {
"example": { "error": "کاربر با این ID یافت نشد" }
}
}
}
}
},
"post": {
"summary": "ثبت یک کاربر جدید",
"requestBody": {
"description": "دادههای کاربر جدید",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"email": { "type": "string", "format": "email" }
}
},
"example": { "name": "سارا", "email": "sara@example.com" }
}
}
},
"responses": {
"201": {
"description": "کاربر با موفقیت ایجاد شد",
"content": {
"application/json": {
"example": { "id": 3, "name": "سارا", "email": "sara@example.com" }
}
}
},
"400": {
"description": "درخواست نامعتبر",
"content": {
"application/json": {
"example": { "error": "فیلدهای اجباری خالی است" }
}
}
}
}
}
}
}
}
چطور از Swagger استفاده کنی؟ - یه راهنمای قدم به قدم
- نصب Swagger UI: میتونی از سایت رسمی Swagger یا با npm (
npm install swagger-ui-express
) نصبش کنی. - اتصال به کد: اگه از Express.js استفاده میکنی، اینجوری باهاش کار کن:
const express = require('express'); const swaggerUi = require('swagger-ui-express'); const app = express(); app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
- تست: فایل JSON رو توی مرورگر باز کن (مثلاً
http://localhost:3000/api-docs
) و با کلیک روی متدها، درخواستها رو تست کن. حتی میتونی پارامترها رو مستقیم وارد کنی!
مزایای مستندسازی با Swagger - چرا باید جدی بگیری؟
- کاربرات (مثلاً توسعهدهندههای دیگه) میتونن بدون اینکه ساعتها تلفون بزنن یا ایمیل بفرستن، APIت رو بفهمن و استفاده کنن.
- تغییرات API رو راحتتر مدیریت میکنی—مثلاً اگه یه متد جدید اضافه کنی، Swagger خودش بهروز میشه.
- برای نحوه مستندسازی REST API با Swagger, دیگه نیازی به نوشتن دستی نیست و با چند خط کد، مستند حرفهای داری!
بخش هفدهم: نتیجهگیری - چرا REST API آیندهست؟
REST API توی سال ۲۰۲۵ دیگه فقط یه ابزار نیست، یه ستون اصلی دنیای توسعه نرمافزاره. چه بخوای REST API در برنامهنویسی اندروید بسازی، چه REST API و توسعه Frontend رو پیش ببری، این تکنولوژی پایه همهچیز شده. با یادگیری چگونه REST API بسازیم, میتونی پروژههای بزرگ رو مدیریت کنی، از امنیتش مطمئن باشی و توی بازارکار بدرخشی. اگه به API جاوااسکریپت, API پایتون یا حتی rest api php علاقه داری، REST نقطه شروع عالیه. پس دست به کار شو، یه API بساز و دنیای برنامهنویسی رو فتح کن!