Как да изградим високопроизводителен API с FastAPI
Как да изградим високопроизводителен API с FastAPI
FastAPI е съвременен, бърз (ефективен) уеб фреймуърк, проектиран специално за изграждане на API. Той е базиран на Python типови подсказки и поддържа асинхронно програмиране, позволявайки на разработчиците да изграждат високопроизводителни, високо налични API услуги с ниска латентност. В тази статия ще ви представим подробно как да използвате FastAPI за изграждане на високопроизводителни API услуги, като ще разгледаме стъпка по стъпка процеса от настройка на средата до разполагане.
Първа стъпка: Подготовка на средата
Трябва да се уверите, че в разработващата ви среда е инсталиран Python 3.6+. Ако все още не е инсталиран, можете да посетите официалния сайт на Python за да изтеглите и инсталирате.
Инсталиране на FastAPI и Uvicorn
FastAPI сам по себе си не предоставя услуга, необходим е ASGI сървър, за да го хоства. Тук използваме Uvicorn, високопроизводителен ASGI сървър. Можете да инсталирате FastAPI и Uvicorn с помощта на следната команда:
pip install fastapi uvicorn
Втора стъпка: Изграждане на основен 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: в режим на разработка, сървърът автоматично се рестартира при промяна на файловете.
Трета стъпка: Дефиниране на маршрути и модели на данни
За да изградите сложен 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.
Четвърта стъпка: Автоматично генериране на документация
Едно от най-големите предимства на FastAPI е, че може автоматично да генерира документация за API. Можете да видите документацията, като посетите следните адреси:
- Swagger UI:
http://127.0.0.1:8000/docs - ReDoc:
http://127.0.0.1:8000/redoc
В тези генерирани документи можете интерактивно да тествате API и да видите формата на заявките и отговорите за всеки маршрут.
Пета стъпка: Добавяне на удостоверяване
В реални приложения удостоверяването е важен аспект. Нека добавим просто удостоверяване на базата на роли.
Добавяне на зависимости за сигурност
Използвайте метода 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
Шеста стъпка: Разполагане на 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 и да повишите ефективността на разработката на вашите проекти!





