๐Ÿš€
Veb-sayt

FastAPI bilan Python'da tez API qurish: amaliy qo'llanma

02.03.2026
โ† Barcha maqolalar

FastAPI bugungi kunda Python ekotizimidagi eng tez rivojlanayotgan web framework'lardan biriga aylandi va bu hech qanday tasodif emas. U async dasturlash, zamonaviy Python tip belgilari (type hints) va avtomatik hujjatlash imkoniyatlarini bitta vositada birlashtirib, dasturchilarga ham qulay, ham g'oyat samarali API qurish imkonini beradi. Agar siz Python'da REST API yozmoqchi bo'lsangiz va Flask yoki Django'ga zamonaviy alternativa izlayotgan bo'lsangiz, FastAPI deyarli har doim eng yaxshi tanlov hisoblanadi. Ushbu maqolada uning asosiy g'oyalari, amaliy kod misollari va boshqa framework'lardan farqini batafsil ko'rib chiqamiz.

FastAPI nima va nega u mashhur

FastAPI โ€” bu Python 3.7 va undan yuqori versiyalar uchun mo'ljallangan, yuqori unumdorlikka ega zamonaviy web framework bo'lib, u Starlette (web qatlami uchun) va Pydantic (ma'lumotlarni tekshirish uchun) kutubxonalari ustiga qurilgan. Uning eng katta ustunligi tezlikdir: FastAPI Node.js va Go bilan taqqoslanadigan darajada tez ishlaydi, chunki u async/await mexanizmidan to'liq foydalanadi va so'rovlarni bloklamasdan parallel qayta ishlaydi. Bundan tashqari, framework kodni yozish vaqtini sezilarli darajada qisqartiradi, chunki ko'p ishlar avtomatik tarzda bajariladi.

Mashhurlikning ikkinchi sababi โ€” avtomatik hujjatlash. Siz endpoint'larni yozganingizdan so'ng, FastAPI ularning asosida Swagger UI va ReDoc interaktiv hujjatlarini o'zi yaratadi. Bu degani, sizning API'ngiz uchun alohida hujjat yozish shart emas โ€” dasturchilar brauzer orqali to'g'ridan-to'g'ri so'rovlarni sinab ko'rishlari mumkin. Type hints asosidagi validatsiya esa kiruvchi ma'lumotlarni avtomatik tekshiradi va xatolik bo'lsa, tushunarli xabarni qaytaradi.

Birinchi API'ni yaratish

FastAPI bilan ishlashni boshlash uchun avval kerakli paketlarni o'rnatamiz. Buning uchun terminalda quyidagi buyruqni bajaring va u FastAPI hamda uni ishga tushiruvchi Uvicorn serverini o'rnatadi. Keyin oddiy bir faylda dasturning birinchi versiyasini yozamiz.

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}

Ushbu kichik dasturda biz ikkita endpoint yaratdik. Birinchisi asosiy manzilga (/) GET so'rov kelganda oddiy xabar qaytaradi, ikkinchisi esa item_id nomli yo'l parametri va q nomli ixtiyoriy so'rov parametrini qabul qiladi. E'tibor bering, item_id ga int tipi belgilangan โ€” bu FastAPI'ga avtomatik ravishda kiruvchi qiymatni butun songa aylantirish va noto'g'ri ma'lumot kelganda xatolik qaytarish ko'rsatmasini beradi. Dasturni ishga tushirish uchun terminalda uvicorn main:app --reload buyrug'ini bajaring.

Pydantic modellari bilan validatsiya

FastAPI'ning eng kuchli tomonlaridan biri โ€” Pydantic modellari yordamida murakkab ma'lumotlar tuzilmalarini tasvirlash va tekshirish imkoniyatidir. Siz oddiy Python sinfi sifatida model yaratasiz va har bir maydonning tipini ko'rsatasiz, FastAPI esa kiruvchi JSON ma'lumotlarini avtomatik ravishda ushbu modelga moslashtiradi. Agar ma'lumot mos kelmasa, framework batafsil xatolik xabarini qaytaradi.

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}

Ushbu misolda User modeli uch maydondan iborat: name va email majburiy, age esa ixtiyoriy. POST so'rovi kelganda FastAPI JSON tanasini avtomatik ravishda User obyektiga aylantiradi va barcha maydonlarni tekshiradi. Bu yondashuv kodni ancha xavfsiz va o'qishga oson qiladi, chunki ma'lumotlar har doim kutilgan formatda bo'lishini kafolatlaydi.

Async va avtomatik OpenAPI hujjat

FastAPI to'liq async qo'llab-quvvatlashga ega, ya'ni siz endpoint funksiyalarini async def bilan yozib, ma'lumotlar bazasi yoki tashqi API'larga so'rovlarni bloklamasdan bajarishingiz mumkin. Bu ayniqsa ko'p so'rovlarni bir vaqtda qayta ishlaydigan yuqori yuklamali tizimlar uchun juda muhim, chunki server resurslari samarali ishlatiladi. Async funksiya ichida await kalit so'zi orqali boshqa asinxron operatsiyalarni kutib turishingiz mumkin.

Avtomatik OpenAPI hujjat esa loyihangizni ishga tushirganingizdan so'ng /docs manzilida Swagger UI ko'rinishida ochiladi. Bu yerda barcha endpoint'lar, ularning parametrlari va kutiladigan javoblar ko'rsatilgan bo'ladi. /redoc manzilida esa ReDoc formatidagi muqobil hujjat mavjud. Ushbu xususiyat jamoaviy ishda va API'ni boshqa dasturchilarga taqdim etishda bebaho yordam beradi.

Flask va Django bilan farqi hamda qachon tanlash kerak

Flask juda yengil va moslashuvchan, biroq u sinxron ishlaydi va validatsiya hamda hujjatlash uchun qo'shimcha kutubxonalar talab qiladi. Django esa to'liq imkoniyatli framework bo'lib, admin panel va ORM kabi ko'plab tayyor komponentlar bilan keladi, lekin u sof API loyihalar uchun biroz og'ir bo'lishi mumkin. FastAPI esa shu ikki dunyo o'rtasidagi muvozanatni topadi: u yengil, ammo zamonaviy validatsiya va avtomatik hujjatlashni o'z ichiga oladi.

FastAPI'ni tanlash mantiqiy bo'lgan holatlar โ€” bu yuqori unumdorlik talab qilinadigan API'lar, mikroservis arxitekturasi, mashina o'rganish modellarini xizmat sifatida taqdim etish va real vaqtli ilovalar. Agar sizga to'liq veb-sayt, admin panel va shablon tizimi kerak bo'lsa, Django hali ham yaxshi tanlov bo'lishi mumkin. Ammo zamonaviy, tez va hujjatlashtirilgan API qurish maqsadingiz bo'lsa, FastAPI deyarli raqobatsiz yetakchi hisoblanadi. Uni o'rganish oson va u sizning mahsulotingizni tez bozorga chiqarishga yordam beradi.

O'xshash maqolalar

๐ŸŒพ Qishloq xo'jaligi va agrobiznes sayti: mahsulotlar katalogi va B2B sotuv โค๏ธ Xayriya fondi sayti: shaffof xayriya yig'ish va donator ishonchi ๐ŸŽ‰ Toyxona va banket zali sayti: tadbir tashkil qilish va onlayn bron qilish ๐Ÿš™ Avtoulov ijarasi sayti: avtomobil katalog, narx kalkulyatori va onlayn bron
๐ŸŒ Til
๐Ÿ‡บ๐Ÿ‡ฟ O'zbek โœ“ ๐Ÿ‡บ๐Ÿ‡ฟ ะŽะทะฑะตะบ ๐Ÿ‡ท๐Ÿ‡บ ะ ัƒััะบะธะน ๐Ÿ‡ฌ๐Ÿ‡ง English