ساخت یک API کوچک و کاربردی با پایتون (Flask/FastAPI) در کمتر از یک ساعت

فهرست مطالب

“`html

ساخت یک API کوچک و کاربردی با پایتون (Flask/FastAPI) در کمتر از یک ساعت

در دنیای توسعه وب مدرن، APIها (Application Programming Interfaces) نقش حیاتی ایفا می‌کنند. آن‌ها امکان ارتباط و تبادل داده بین سیستم‌های مختلف را فراهم می‌آورند و بستری را برای ساخت برنامه‌های کاربردی مقیاس‌پذیر و منعطف ایجاد می‌کنند. پایتون، با سینتکس ساده و کتابخانه‌های قدرتمندش، یک انتخاب ایده‌آل برای ساخت APIها است. در این مقاله، به شما نشان خواهیم داد که چگونه می‌توانید با استفاده از دو فریم‌ورک محبوب پایتون، Flask و FastAPI، یک API کوچک و کاربردی را در کمتر از یک ساعت پیاده‌سازی کنید.

چرا پایتون برای ساخت API؟

پایتون دلایل متعددی برای تبدیل شدن به یک زبان محبوب برای توسعه API دارد:

  • سینتکس خوانا و آسان: پایتون به دلیل سینتکس ساده و قابل فهمش، یادگیری و استفاده از آن را برای توسعه‌دهندگان آسان می‌کند.
  • کتابخانه‌های قدرتمند: پایتون دارای اکوسیستم گسترده‌ای از کتابخانه‌ها و فریم‌ورک‌ها است که توسعه API را تسریع می‌بخشند.
  • جامعه بزرگ و فعال: جامعه بزرگ توسعه‌دهندگان پایتون به معنای دسترسی به منابع آموزشی فراوان، پشتیبانی قوی و رفع آسان‌تر مشکلات است.
  • قابلیت مقیاس‌پذیری: فریم‌ورک‌های پایتون امکان ساخت APIهایی با قابلیت مقیاس‌پذیری بالا را فراهم می‌کنند.
  • سازگاری با دیتابیس‌های مختلف: پایتون به راحتی با دیتابیس‌های مختلف مانند MySQL، PostgreSQL، MongoDB و غیره ادغام می‌شود.

Flask در مقابل FastAPI: کدام فریم‌ورک برای شما مناسب‌تر است؟

Flask و FastAPI هر دو فریم‌ورک‌های محبوب پایتون برای ساخت API هستند، اما تفاوت‌های کلیدی بین آن‌ها وجود دارد:

ویژگی Flask FastAPI
سطح انتزاع میکروفریم‌ورک (حداقل امکانات و انعطاف‌پذیری بالا) فریم‌ورک کامل (امکانات بیشتر و سرعت توسعه بالاتر)
عملکرد معمولی بسیار سریع (به لطف استفاده از تکنولوژی‌های مدرن)
اعتبارسنجی داده نیاز به استفاده از کتابخانه‌های خارجی مانند Marshmallow یا Voluptuous پشتیبانی داخلی از اعتبارسنجی داده با استفاده از Pydantic
مستندسازی خودکار نیاز به استفاده از کتابخانه‌های خارجی مانند Flask-RESTful یا Flask-Swagger مستندسازی خودکار با استفاده از Swagger UI و ReDoc
یادگیری آسان برای مبتدیان کمی پیچیده‌تر به دلیل مفاهیم پیشرفته‌تر
مناسب برای پروژه‌های کوچک و متوسط با نیاز به انعطاف‌پذیری بالا پروژه‌های بزرگ و پیچیده با نیاز به عملکرد بالا و مستندسازی خودکار

به طور خلاصه، Flask برای پروژه‌هایی که نیاز به انعطاف‌پذیری بالا و کنترل بیشتر دارند، مناسب است. در مقابل، FastAPI برای پروژه‌هایی که نیاز به عملکرد بالا، اعتبارسنجی داده قوی و مستندسازی خودکار دارند، انتخاب بهتری است.

راهنمای گام به گام: ساخت API با Flask

در این بخش، به شما نشان خواهیم داد که چگونه می‌توانید با استفاده از Flask یک API ساده را ایجاد کنید.

پیش‌نیازها

  • پایتون (نسخه 3.6 یا بالاتر)
  • pip (مدیریت بسته پایتون)

نصب Flask

ابتدا Flask را با استفاده از pip نصب کنید:

pip install Flask

ساخت یک API ساده

یک فایل پایتون با نام `app.py` ایجاد کنید و کد زیر را در آن قرار دهید:


 from flask import Flask, jsonify

 app = Flask(__name__)

 @app.route('/')
 def hello_world():
  return jsonify({'message': 'Hello, World!'})

 @app.route('/users', methods=['GET'])
 def get_users():
  users = [
   {'id': 1, 'name': 'John Doe'},
   {'id': 2, 'name': 'Jane Doe'}
  ]
  return jsonify(users)

 if __name__ == '__main__':
  app.run(debug=True)
 

توضیح کد:

  • `from flask import Flask, jsonify`: کتابخانه‌های Flask و `jsonify` را import می‌کند. `jsonify` برای تبدیل داده‌ها به فرمت JSON استفاده می‌شود.
  • `app = Flask(__name__)`: یک شیء Flask ایجاد می‌کند.
  • `@app.route(‘/’)`: یک route یا مسیر برای URL ریشه (`/`) تعریف می‌کند.
  • `def hello_world():`: یک تابع تعریف می‌کند که وقتی کاربر به URL ریشه مراجعه می‌کند، اجرا می‌شود.
  • `return jsonify({‘message’: ‘Hello, World!’})`: یک پاسخ JSON با پیام “Hello, World!” برمی‌گرداند.
  • `@app.route(‘/users’, methods=[‘GET’])`: یک route برای URL `/users` با متد HTTP GET تعریف می‌کند.
  • `def get_users():`: یک تابع تعریف می‌کند که وقتی کاربر یک درخواست GET به URL `/users` ارسال می‌کند، اجرا می‌شود.
  • `users = […]`: یک لیست از دیکشنری‌ها ایجاد می‌کند که اطلاعات کاربران را ذخیره می‌کند.
  • `return jsonify(users)`: لیست کاربران را به فرمت JSON تبدیل کرده و به عنوان پاسخ برمی‌گرداند.
  • `if __name__ == ‘__main__’: app.run(debug=True)`: برنامه Flask را در حالت debug اجرا می‌کند.

اجرای API

فایل `app.py` را از طریق خط فرمان اجرا کنید:

python app.py

حالا می‌توانید API خود را با مراجعه به آدرس‌های زیر در مرورگر خود تست کنید:

  • `http://127.0.0.1:5000/`: نمایش پیام “Hello, World!”
  • `http://127.0.0.1:5000/users`: نمایش لیست کاربران در فرمت JSON

راهنمای گام به گام: ساخت API با FastAPI

در این بخش، به شما نشان خواهیم داد که چگونه می‌توانید با استفاده از FastAPI یک API ساده را ایجاد کنید.

پیش‌نیازها

  • پایتون (نسخه 3.6 یا بالاتر)
  • pip (مدیریت بسته پایتون)

نصب FastAPI و Uvicorn

FastAPI و Uvicorn (یک سرور ASGI برای اجرای برنامه‌های FastAPI) را با استفاده از pip نصب کنید:

pip install fastapi uvicorn

ساخت یک API ساده

یک فایل پایتون با نام `main.py` ایجاد کنید و کد زیر را در آن قرار دهید:


 from fastapi import FastAPI
 from pydantic import BaseModel

 app = FastAPI()

 class User(BaseModel):
  id: int
  name: str

 @app.get("/")
 async def read_root():
  return {"message": "Hello, World!"}

 @app.get("/users")
 async def read_users():
  users = [
   User(id=1, name="John Doe"),
   User(id=2, name="name Doe")
  ]
  return users
 

توضیح کد:

  • `from fastapi import FastAPI`: کتابخانه FastAPI را import می‌کند.
  • `from pydantic import BaseModel`: کلاس `BaseModel` از کتابخانه Pydantic را import می‌کند. Pydantic برای اعتبارسنجی داده‌ها استفاده می‌شود.
  • `app = FastAPI()`: یک شیء FastAPI ایجاد می‌کند.
  • `class User(BaseModel):`: یک مدل داده به نام `User` تعریف می‌کند که از `BaseModel` ارث می‌برد. این مدل شامل دو فیلد `id` (عدد صحیح) و `name` (رشته) است.
  • `@app.get(“/”)`: یک route برای URL ریشه (`/`) با متد HTTP GET تعریف می‌کند.
  • `async def read_root():`: یک تابع asynchronous تعریف می‌کند که وقتی کاربر به URL ریشه مراجعه می‌کند، اجرا می‌شود.
  • `return {“message”: “Hello, World!”}`: یک دیکشنری با پیام “Hello, World!” برمی‌گرداند.
  • `@app.get(“/users”)`: یک route برای URL `/users` با متد HTTP GET تعریف می‌کند.
  • `async def read_users():`: یک تابع asynchronous تعریف می‌کند که وقتی کاربر یک درخواست GET به URL `/users` ارسال می‌کند، اجرا می‌شود.
  • `users = […]`: یک لیست از اشیاء `User` ایجاد می‌کند که اطلاعات کاربران را ذخیره می‌کند.
  • `return users`: لیست کاربران را برمی‌گرداند. FastAPI به طور خودکار آن را به فرمت JSON تبدیل می‌کند.

اجرای API

فایل `main.py` را با استفاده از Uvicorn اجرا کنید:

uvicorn main:app --reload

توضیح دستور:

  • `uvicorn`: اجرا کننده سرور ASGI
  • `main:app`: به فایل `main.py` و شیء `app` اشاره می‌کند
  • `–reload`: سرور را به طور خودکار پس از هر تغییری در کد، restart می‌کند.

حالا می‌توانید API خود را با مراجعه به آدرس‌های زیر در مرورگر خود تست کنید:

  • `http://127.0.0.1:8000/`: نمایش پیام “Hello, World!”
  • `http://127.0.0.1:8000/users`: نمایش لیست کاربران در فرمت JSON
  • `http://127.0.0.1:8000/docs`: نمایش مستندات خودکار API با استفاده از Swagger UI
  • `http://127.0.0.1:8000/redoc`: نمایش مستندات خودکار API با استفاده از ReDoc

اضافه کردن قابلیت‌های بیشتر به API

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

  • دریافت داده از کاربر (POST): برای دریافت داده از کاربر و ذخیره آن در دیتابیس، می‌توانید از متد HTTP POST استفاده کنید.
  • به‌روزرسانی داده‌ها (PUT/PATCH): برای به‌روزرسانی داده‌های موجود در دیتابیس، می‌توانید از متدهای HTTP PUT (برای به‌روزرسانی کامل) یا PATCH (برای به‌روزرسانی جزئی) استفاده کنید.
  • حذف داده‌ها (DELETE): برای حذف داده‌های موجود در دیتابیس، می‌توانید از متد HTTP DELETE استفاده کنید.
  • اعتبارسنجی داده‌ها: برای اطمینان از صحت و معتبر بودن داده‌های ورودی، می‌توانید از اعتبارسنجی داده‌ها استفاده کنید. Flask به کتابخانه‌های خارجی مانند Marshmallow یا Voluptuous نیاز دارد، در حالی که FastAPI از Pydantic برای اعتبارسنجی داده‌ها به صورت داخلی پشتیبانی می‌کند.
  • احراز هویت و مجوزدهی: برای کنترل دسترسی به API، می‌توانید از احراز هویت و مجوزدهی استفاده کنید. روش‌های مختلفی برای احراز هویت وجود دارد، مانند Basic Authentication، API Key Authentication، OAuth 2.0 و JWT (JSON Web Tokens).
  • استفاده از دیتابیس: برای ذخیره و بازیابی داده‌ها، می‌توانید از یک دیتابیس استفاده کنید. Flask و FastAPI با دیتابیس‌های مختلفی مانند MySQL، PostgreSQL، MongoDB و غیره سازگار هستند.
  • مدیریت خطاها: برای مدیریت خطاها و ارائه پاسخ‌های مناسب به کاربر، می‌توانید از مکانیزم‌های مدیریت خطا استفاده کنید.
  • لاگ‌گیری: برای ثبت رویدادها و مشکلات احتمالی، می‌توانید از لاگ‌گیری استفاده کنید.

بهینه‌سازی API برای عملکرد بهتر

برای اطمینان از عملکرد بهینه API، می‌توانید اقدامات زیر را انجام دهید:

  • استفاده از Cache: با استفاده از Cache می‌توانید داده‌هایی که به طور مکرر درخواست می‌شوند را در حافظه ذخیره کنید و از بار روی دیتابیس بکاهید.
  • استفاده از CDN (Content Delivery Network): با استفاده از CDN می‌توانید فایل‌های استاتیک مانند تصاویر، ویدئوها و فایل‌های CSS/JavaScript را در سرورهای مختلف در سراسر جهان ذخیره کنید و سرعت بارگذاری آن‌ها را برای کاربران افزایش دهید.
  • فشرده‌سازی پاسخ‌ها: با فشرده‌سازی پاسخ‌های API می‌توانید حجم داده‌های ارسالی را کاهش دهید و سرعت انتقال آن‌ها را افزایش دهید.
  • استفاده از Gunicorn یا uWSGI: برای استقرار API در محیط Production، می‌توانید از سرورهای WSGI مانند Gunicorn یا uWSGI استفاده کنید.
  • بهینه‌سازی کوئری‌های دیتابیس: با بهینه‌سازی کوئری‌های دیتابیس می‌توانید سرعت بازیابی داده‌ها را افزایش دهید.
  • مانیتورینگ و لاگ‌گیری: با مانیتورینگ و لاگ‌گیری API می‌توانید عملکرد آن را به طور مداوم بررسی کنید و مشکلات احتمالی را شناسایی و رفع کنید.

منابع آموزشی بیشتر

برای یادگیری بیشتر در مورد ساخت API با پایتون، می‌توانید از منابع آموزشی زیر استفاده کنید:

نتیجه‌گیری

در این مقاله، به شما نشان دادیم که چگونه می‌توانید با استفاده از Flask و FastAPI یک API کوچک و کاربردی را با پایتون در کمتر از یک ساعت پیاده‌سازی کنید. با استفاده از این دانش، می‌توانید APIهای قدرتمندتری را برای پروژه‌های خود ایجاد کنید. به یاد داشته باشید که یادگیری مداوم و تمرین عملی کلید موفقیت در توسعه API است.

“`

“تسلط به برنامه‌نویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT”

قیمت اصلی 2.290.000 ریال بود.قیمت فعلی 1.590.000 ریال است.

"تسلط به برنامه‌نویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT"

"با شرکت در این دوره جامع و کاربردی، به راحتی مهارت‌های برنامه‌نویسی پایتون را از سطح مبتدی تا پیشرفته با کمک هوش مصنوعی ChatGPT بیاموزید. این دوره، با بیش از 6 ساعت محتوای آموزشی، شما را قادر می‌سازد تا به سرعت الگوریتم‌های پیچیده را درک کرده و اپلیکیشن‌های هوشمند ایجاد کنید. مناسب برای تمامی سطوح با زیرنویس فارسی حرفه‌ای و امکان دانلود و تماشای آنلاین."

ویژگی‌های کلیدی:

بدون نیاز به تجربه قبلی برنامه‌نویسی

زیرنویس فارسی با ترجمه حرفه‌ای

۳۰ ٪ تخفیف ویژه برای دانشجویان و دانش آموزان