Як використовувати FastAPI для створення високопродуктивних API-сервісів
Як використовувати FastAPI для створення високопродуктивних API-сервісів
FastAPI — це сучасний, швидкий (ефективний) веб-фреймворк, спеціально розроблений для створення API. Він базується на типізації Python і підтримує асинхронне програмування, що дозволяє розробникам створювати високопродуктивні, високо доступні API-сервіси з низькою затримкою. У цій статті ми детально розглянемо, як використовувати FastAPI для створення високопродуктивних API-сервісів, ми будемо пояснювати поетапно, щоб допомогти вам реалізувати весь процес від налаштування середовища до розгортання.
Крок 1: Підготовка середовища
Вам потрібно переконатися, що у вашому середовищі розробки встановлено Python 3.6+. Якщо ви ще не встановили, ви можете відвідати офіційний сайт Python для завантаження та встановлення.
Встановлення FastAPI та Uvicorn
FastAPI сам по собі не надає сервіс, йому потрібен ASGI-сервер для роботи. Тут ми використовуємо Uvicorn, високопродуктивний ASGI-сервер. Ви можете встановити FastAPI та Uvicorn за допомогою наступної команди:
pip install fastapi uvicorn
Крок 2: Створення базового API
Давайте створимо простий додаток FastAPI.
Створення файлу додатка
У вашій директорії проекту створіть файл Python, наприклад, main.py, а потім напишіть у ньому наступний код:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello, World!"}
У наведеному вище коді ми спочатку імпортували FastAPI і створили екземпляр app. Потім ми визначили GET-маршрут, який повертає просту JSON-відповідь при доступі до кореневого шляху /.
Запуск сервера
Запустіть ваш FastAPI сервер за допомогою наступної команди:
uvicorn main:app --reload
main: вказує на ім'я файлу без суфікса .py.app: вказує на екземпляр FastAPI.--reload: у режимі розробки сервер автоматично перезапускається при зміні файлів.
Крок 3: Визначення маршрутів та моделей даних
Щоб створити складні API, вам потрібно використовувати Pydantic для визначення моделей даних.
Створення моделі даних
Додайте наступний код у main.py:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
is_available: bool = True
Цей код використовує Pydantic для створення моделі даних Item, яка містить три атрибути: назву товару, ціну та доступність.
Додавання нового маршруту
Далі ми можемо визначити новий POST-маршрут для отримання даних типу Item:
@app.post("/items/")
async def create_item(item: Item):
return {"item_name": item.name, "item_price": item.price}
У цьому маршруті FastAPI автоматично перевіряє вхідні дані та відображає їх на модель Item.
Крок 4: Автоматичне генерування документації
Однією з найбільших переваг FastAPI є можливість автоматично генерувати документацію API. Ви можете переглянути її, відвідавши наступні адреси:
- Swagger UI:
http://127.0.0.1:8000/docs - ReDoc:
http://127.0.0.1:8000/redoc
У цих згенерованих документах ви можете інтерактивно тестувати API, переглядати формат запитів та відповідей для кожного маршруту.
Крок 5: Додавання автентифікації
У реальних застосунках автентифікація є важливим етапом. Давайте додамо просту автентифікацію на основі ролей.
Додавання залежностей безпеки
Використовуйте метод Depends FastAPI та OAuth2PasswordBearer для реалізації автентифікації:
from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
async def fake_decode_token(token):
return {"sub": token}
async def get_current_user(token: str = Depends(oauth2_scheme)):
user = fake_decode_token(token)
if user is None:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid authentication credentials")
return user
Захист маршрутів
Потім ви можете додати автентифікацію до маршрутів, які потрібно захистити:
@app.get("/users/me")
async def read_users_me(current_user: dict = Depends(get_current_user)):
return current_user
Крок 6: Розгортання додатку FastAPI
Коли ви завершите розробку, вам, можливо, потрібно буде розгорнути додаток на хмарному сервері. Ви можете вибрати розгортання за допомогою Docker.
Створення Dockerfile
У директорії проекту створіть файл з назвою Dockerfile і введіть наступний вміст:
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8
COPY ./app /app
Створення Docker-образу
У вашому терміналі використовуйте наступну команду для створення Docker-образу:
docker build -t myfastapiapp .
Запуск Docker-контейнера
Запустіть ваш додаток FastAPI:
docker run -d --name fastapi -p 80:80 myfastapiapp
Висновок
У цій статті ми детально пояснили, як використовувати FastAPI для створення високопродуктивних API-сервісів, від підготовки середовища до створення базового API, визначення маршрутів і моделей даних, а також додавання автентифікації та розгортання. FastAPI надає безліч потужних функцій, що робить створення сучасних API простим і ефективним, ви можете далі досліджувати більше функцій і можливостей через офіційну документацію. Сподіваємося, ця стаття допоможе вам швидше освоїти FastAPI і ефективно підвищити продуктивність вашої розробки проектів!





