Как использовать 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="Недействительные учетные данные аутентификации")
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 и эффективно повысить вашу производительность разработки проектов!





