Python / FastAPI үндэс

FastAPI үндэс

FastAPI нь Python-д зориулсан орчин үеийн web framework бөгөөд хурд, энгийн байдал, автомат documentation-оороо алдартай. Instagram, Uber, Netflix зэрэг компани ашигладаг. Хамгийн чухал нь — эхлэгч хэдхэн мөрийн кодоор бодит API бүтээж чадна.

Суулгах ба анхны server

bash
pip install fastapi uvicorn

fastapi нь framework, uvicorn нь Python-ий ASGI server — таны кодыг хэрэглэгчдэд хүргэдэг.

python
# main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def эхлэл():
    return {"мэндчилгээ": "Сайн уу, дэлхий!"}

@app.get("/тухай")
def тухай():
    return {"нэр": "Миний API", "хувилбар": "1.0"}
bash
# Server ажиллуулах
uvicorn main:app --reload

Browser-т http://127.0.0.1:8000 нээхэд JSON хариу харагдана. --reload нь кодын өөрчлөлтийг автоматаар мэдрэж server-ийг дахин эхлүүлдэг — хөгжүүлэхэд маш тохиромжтой.

Path parameter — URL-аас утга авах

python
from fastapi import FastAPI

app = FastAPI()

сурагчид = {
    1: {"нэр": "Болд", "xp": 150},
    2: {"нэр": "Сарнай", "xp": 320},
    3: {"нэр": "Төгс", "xp": 80},
}

@app.get("/сурагч/{сурагч_id}")
def сурагч_авах(сурагч_id: int):
    if сурагч_id not in сурагчид:
        return {"алдаа": "Сурагч олдсонгүй"}
    return сурагчид[сурагч_id]

{сурагч_id} нь URL-аас утга авна. сурагч_id: int гэж бичсэнээр FastAPI автоматаар int болгон хөрвүүлж, буруу утга дамжуулбал автоматаар алдаа буцаана — та гар аргаар шалгах шаардлагагүй.

Query parameter — шүүлт, хайлт

python
from fastapi import FastAPI
from typing import Optional

app = FastAPI()

@app.get("/сурагчид")
def сурагчид_жагсаах(
    хязгаар: int = 10,
    xp_дээш: Optional[int] = None
):
    жагсаалт = [
        {"нэр": "Болд", "xp": 150},
        {"нэр": "Сарнай", "xp": 320},
        {"нэр": "Төгс", "xp": 80},
    ]

    if xp_дээш is not None:
        жагсаалт = [с for с in жагсаалт if с["xp"] >= xp_дээш]

    return жагсаалт[:хязгаар]

http://localhost:8000/сурагчид?хязгаар=2&xp_дээш=100 гэж хандахад шүүгдсэн үр дүн буцаана. Path parameter биш тул URL-д {} хэрэггүй — FastAPI автоматаар query parameter гэж таньдаг.

POST — шинэ өгөгдөл хүлээн авах

Pydantic BaseModel ашиглан request body-ийн бүтцийг тодорхойлно:

python
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class СурагчОруулга(BaseModel):
    нэр: str
    нас: int
    и_мэйл: str

сурагчид = []

@app.post("/сурагч")
def сурагч_нэмэх(сурагч: СурагчОруулга):
    шинэ = {
        "id": len(сурагчид) + 1,
        "нэр": сурагч.нэр,
        "нас": сурагч.нас,
        "и_мэйл": сурагч.и_мэйл,
        "xp": 0
    }
    сурагчид.append(шинэ)
    return шинэ

FastAPI нь Pydantic ашиглан ирсэн JSON-ийг автоматаар шалгадаг — нас талбарт мөр дамжуулбал алдаа буцаана. Та гар аргаар шалгах кодгүйгээр аюулгүй API бичнэ.

Автомат документ

FastAPI-ийн хамгийн гайхалтай онцлогуудын нэг: http://127.0.0.1:8000/docs хаягт Swagger UI автоматаар үүсдэг. Browser-т бүх endpoint-ийг харж, шууд туршиж болно — нэмэлт тохиргоогүйгээр.

Дараагийн хичээлд:

FastAPI маршрут ба параметр — илүү нарийн routing, алдаа зохицуулах, хариуны загвар тодорхойлох аргыг дэлгэрэнгүй сурна.