Како да изградите високо перформантен API сервис со FastAPI
Како да изградите високо перформантен API сервис со FastAPI
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: Додавање на автентикација
Во реални апликации, автентикацијата е важен аспект. Да додадеме едноставна автентикација базирана на улоги.
Додавање на безбедносни зависности
Користете ја FastAPI Depends методата и 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 и да ја зголемите вашата ефикасност во развојот на проекти!





