🚀
Веб-сайт

FastAPI билан Python'да тез API қуриш: амалий қўлланма

02.03.2026
← Барча мақолалар

FastAPI бугунги кунда Python экотизимидаги энг тез ривожланаётган web framework'лардан бирига айланди ва бу ҳеч қандай тасодиф эмас. У async дастурлаш, замонавий Python тип белгилари (type hints) ва автоматик ҳужжатлаш имкониятларини битта воситада бирлаштириб, дастурчиларга ҳам қулай, ҳам ғоят самарали API қуриш имконини беради. Агар сиз Python'да REST API ёзмоқчи бўлсангиз ва Flask ёки Django'га замонавий альтернатива излаётган бўлсангиз, FastAPI деярли ҳар доим энг яхши танлов ҳисобланади. Ушбу мақолада унинг асосий ғоялари, амалий код мисоллари ва бошқа framework'лардан фарқини батафсил кўриб чиқамиз.

FastAPI нима ва нега у машҳур

FastAPI — бу Python 3.7 ва ундан юқори версиялар учун мўлжалланган, юқори унумдорликка эга замонавий web framework бўлиб, у Starlette (web қатлами учун) ва Pydantic (маълумотларни текшириш учун) кутубхоналари устига қурилган. Унинг энг катта устунлиги тезликдир: FastAPI Node.js ва Go билан тақосланадиган даражада тез ишлайди, чунки у async/await механизмидан тўлиқ фойдаланади ва сўровларни блокламасдан параллел қайта ишлайди. Бундан ташқари, framework кодни ёзиш вақтини сезиларли даражада қисқартиради, чунки кўп ишлар автоматик тарзда бажарилади.

Машҳурликнинг иккинчи сабаби — автоматик ҳужжатлаш. Сиз endpoint'ларни ёзганингиздан сўнг, FastAPI уларнинг асосида Swagger UI ва ReDoc интерактив ҳужжатларини ўзи яратади. Бу дегани, сизнинг API'нгиз учун алоҳида ҳужжат ёзиш шарт эмас — дастурчилар браузер орқали тўғридан-тўғри сўровларни синаб кўришлари мумкин. Type hints асосидаги валидация эса кирувчи маълумотларни автоматик текширади ва хатолик бўлса, тушунарли хабарни қайтаради.

Биринчи API'ни яратиш

FastAPI билан ишлашни бошлаш учун аввал керакли пакетларни ўрнатамиз. Бунинг учун терминалда қуйидаги буйруқни бажаринг ва у FastAPI ҳамда уни ишга туширувчи Uvicorn серверини ўрнатади. Кейин оддий бир файлда дастурнинг биринчи версиясини ёзамиз ва асосий тузилмани кўрамиз.

pip install fastapi uvicorn

# main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Salom, FastAPI!"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}

Ушбу кичик дастурда биз иккита endpoint яратдик. Биринчиси асосий манзилга (/) GET сўров келганда оддий хабар қайтаради, иккинчиси эса item_id номли йўл параметри ва q номли ихтиёрий сўров параметрини қабул қилади. Эътибор беринг, item_id га int типи белгиланган — бу FastAPI'га автоматик равишда кирувчи қийматни бутун сонга айлантириш ва нотўғри маълумот келганда хатолик қайтариш кўрсатмасини беради. Дастурни ишга тушириш учун терминалда uvicorn main:app --reload буйруғини бажаринг.

Pydantic моделлари билан валидация

FastAPI'нинг энг кучли томонларидан бири — Pydantic моделлари ёрдамида мураккаб маълумотлар тузилмаларини тасвирлаш ва текшириш имкониятидир. Сиз оддий Python синфи сифатида модел яратасиз ва ҳар бир майдоннинг типини кўрсатасиз, FastAPI эса кирувчи JSON маълумотларини автоматик равишда ушбу моделга мослаштиради. Агар маълумот мос келмаса, framework батафсил хатолик хабарини қайтаради.

from pydantic import BaseModel
from fastapi import FastAPI

app = FastAPI()

class User(BaseModel):
    name: str
    email: str
    age: int | None = None

@app.post("/users/")
def create_user(user: User):
    return {"created": user.name, "email": user.email}

Ушбу мисолда User модели уч майдондан иборат: name ва email мажбурий, age эса ихтиёрий. POST сўрови келганда FastAPI JSON танасини автоматик равишда User объектига айлантиради ва барча майдонларни текширади. Бу ёндашув кодни анча хавфсиз ва ўқишга осон қилади, чунки маълумотлар ҳар доим кутилган форматда бўлишини кафолатлайди.

Async ва автоматик OpenAPI ҳужжат

FastAPI тўлиқ async қўллаб-қувватлашга эга, яъни сиз endpoint функцияларини async def билан ёзиб, маълумотлар базаси ёки ташқи API'ларга сўровларни блокламасдан бажаришингиз мумкин. Бу айниқса кўп сўровларни бир вақтда қайта ишлайдиган юқори юкламали тизимлар учун жуда муҳим, чунки сервер ресурслари самарали ишлатилади. Async функция ичида await калит сўзи орқали бошқа асинхрон операцияларни кутиб туришингиз мумкин.

Автоматик OpenAPI ҳужжат эса лойиҳангизни ишга туширганингиздан сўнг /docs манзилида Swagger UI кўринишида очилади. Бу ерда барча endpoint'лар, уларнинг параметрлари ва кутиладиган жавоблар кўрсатилган бўлади. /redoc манзилида эса ReDoc форматидаги муқобил ҳужжат мавжуд. Ушбу хусусият жамоавий ишда ва API'ни бошқа дастурчиларга тақдим этишда бебаҳо ёрдам беради.

Flask ва Django билан фарқи ҳамда қачон танлаш керак

Flask жуда енгил ва мослашувчан, бироқ у синхрон ишлайди ва валидация ҳамда ҳужжатлаш учун қўшимча кутубхоналар талаб қилади. Django эса тўлиқ имкониятли framework бўлиб, админ панел ва ORM каби кўплаб тайёр компонентлар билан келади, лекин у соф API лойиҳалар учун бироз оғир бўлиши мумкин. FastAPI эса шу икки дунё ўртасидаги мувозанатни топади: у енгил, аммо замонавий валидация ва автоматик ҳужжатлашни ўз ичига олади.

FastAPI'ни танлаш мантиқий бўлган ҳолатлар — бу юқори унумдорлик талаб қилинадиган API'лар, микросервис архитектураси, машина ўрганиш моделларини хизмат сифатида тақдим этиш ва реал вақтли иловалар. Агар сизга тўлиқ веб-сайт, админ панел ва шаблон тизими керак бўлса, Django ҳали ҳам яхши танлов бўлиши мумкин. Аммо замонавий, тез ва ҳужжатлаштирилган API қуриш мақсадингиз бўлса, FastAPI деярли рақобатсиз етакчи ҳисобланади. Уни ўрганиш осон ва у сизнинг маҳсулотингизни тез бозорга чиқаришга ёрдам беради.

Ўхшаш мақолалар

🌾 Қишлоқ хўжалиги ва агро сайти: маҳсулотлар каталоги ❤️ Хайрия фонди сайти: шаффоф ва ишонч 🎉 Тўйxона ва банкет зали сайти: бирон қилиш 🚙 Автомобил ижара сайти: каталог ва бирон
🌐 Тил
🇺🇿 O'zbek 🇺🇿 Ўзбек 🇷🇺 Русский 🇬🇧 English