گام های اولیه¶
ساده ترین پروژه FastAPI می تواند به شکل زیر باشد:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
لطفاً کد زیر را در یک فایل با نام main.py قرار دهید.
برای اجرا به صورت live server ، کد را اجرا کنید.
$ uvicorn main:app --reload
<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
<span style="color: green;">INFO</span>: Started reloader process [28720]
<span style="color: green;">INFO</span>: Started server process [28722]
<span style="color: green;">INFO</span>: Waiting for application startup.
<span style="color: green;">INFO</span>: Application startup complete.
نکته
دستور 'uvicorn main:app' به این موارد اشاره دارد:
- "main": فایل "main.py" ("ماژول" پایتون).
- "app": شی ایجاد شده در "main.py" با خط "app = FastAPI()".
- "--reload": سرور را پس از تغییر کد راه اندازی مجدد کنید. فقط برای توسعه استفاده کنید.
در خروجی، یک خط با چیزی مانند زیر خواهید دید:
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
این خط نشان میدهد که برنامه شما در local machine شما در چه آدرسی قرار گرفته است و از چه URLی برای دسترسی به برنامه استفاده می کنید.
بررسی کنید¶
مرورگر خود را در آدرس http://127.0.0.1:8000 باز کنید.
شما پاسخ JSON را به شکل زیر مشاهده خواهید کرد:
{"message": "Hello World"}
اسناد API تعاملی (Interactive API docs)¶
اکنون به http://127.0.0.1:8000/docs بروید.
اسناد API تعاملی خودکار را خواهید دید (ارائه شده توسط Swagger UI):
اسناد API جایگزین (Alternative API docs)¶
و اکنون به http://127.0.0.1:8000/redoc بروید .
اسناد خودکار جایگزین را خواهید دید (ارائه شده توسط ReDoc):
OpenAPI¶
FastAPI با استفاده از استاندارد OpenAPI برای تعریف APIها، یک "schema" با تمام API شما ایجاد می کند.
"schema" (طرحواره)¶
"schema" تعریف یا توصیف چیزی است. نه کدی که آن را پیاده سازی می کند، بلکه فقط یک توضیح انتزاعی است.
"schema" API¶
در این مورد، OpenAPI مشخصاتی است که نحوه تعریف یک شمای API شما
این تعریف schema شامل مسیرهای API شما، پارامترهای احتمالی آنها و غیره است.
"schema" داده¶
اصطلاح "schema" ممکن است به شکل برخی از دادهها مانند محتوای JSON نیز اشاره داشته باشد.
در آن صورت، این به معنای ویژگیهای JSON، و انواع دادههای آنها و غیره است.
OpenAPI و JSON Schema¶
OpenAPI یک schema API برای API شما تعریف می کند. و این schema شامل تعاریف (یا "schema ها") داده های ارسال و دریافت شده توسط API شما با استفاده از JSON Schema، استاندارد schema های داده JSON است.
«openapi.json» را بررسی کنید¶
اگر کنجکاو هستید که schema OpenAPI خام چگونه به نظر می رسد، FastAPI به طور خودکار یک JSON (شما) با توضیحات همه API شما تولید می کند.
میتوانید مستقیماً آن را در: http://127.0.0.1:8000/openapi ببینید .json.
یک JSON را نشان می دهد که با چیزی شبیه به:
{
"openapi": "3.1.0",
"info": {
"title": "FastAPI",
"version": "0.1.0"
},
"paths": {
"/items/": {
"get": {
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
OpenAPI برای چیست¶
schema OpenAPI همان چیزی است که دو سیستم اسناد تعاملی را شامل می شود.
و ده ها گزینه جایگزین وجود دارد که همه بر اساس OpenAPI هستند. شما به راحتی می توانید هر یک از آن جایگزین ها را به برنامه خود که با FastAPI ساخته شده است اضافه کنید.
همچنین می توانید از آن برای تولید کد به صورت خودکار برای کلاینت هایی که با API شما ارتباط برقرار می کنند استفاده کنید. به عنوان مثال، برنامه های frontend، تلفن همراه یا IoT.
مرحله ۱: import FastAPI
¶
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
"FastAPI" یک کلاس پایتون است که تمام عملکردها را برای API شما فراهم می کند.
جزئیات فنی
«FastAPI» کلاسی است که مستقیماً از «Starlette» به ارث میبرد. میتوانید با "FastAPI" نیز از همه قابلیتهای Starlette استفاده کنید.
مرحله۲ : یک 'instance' از "FastAPI" ایجاد کنید¶
```"Python hl_lines="3" from fastapi import FastAPI
app = FastAPI()
@app.get("/") async def root(): return {"message": "Hello World"}
در اینجا، متغیر 'app' یک "نمونه" (instance) از کلاس 'FastAPI' خواهد بود.
این نمونه اصلی تعامل شما برای ایجاد تمام (API) خواهد بود.
این "app" همان متغیری است که توسط 'uvicorn' در دستور زیر مورد اشاره قرار میگیرد:
<div class="termy">
```console
$ uvicorn main:app --reload
<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)