FastAPI үндэс
FastAPI нь Python-д зориулсан орчин үеийн web framework бөгөөд хурд, энгийн байдал, автомат documentation-оороо алдартай. Instagram, Uber, Netflix зэрэг компани ашигладаг. Хамгийн чухал нь — эхлэгч хэдхэн мөрийн кодоор бодит API бүтээж чадна.
Суулгах ба анхны server
pip install fastapi uvicorn
fastapi нь framework, uvicorn нь Python-ий ASGI server — таны кодыг хэрэглэгчдэд хүргэдэг.
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def эхлэл():
return {"мэндчилгээ": "Сайн уу, дэлхий!"}
@app.get("/тухай")
def тухай():
return {"нэр": "Миний API", "хувилбар": "1.0"}
# Server ажиллуулах
uvicorn main:app --reload
Browser-т http://127.0.0.1:8000 нээхэд JSON хариу харагдана. --reload нь кодын өөрчлөлтийг автоматаар мэдрэж server-ийг дахин эхлүүлдэг — хөгжүүлэхэд маш тохиромжтой.
Path parameter — URL-аас утга авах
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 — шүүлт, хайлт
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-ийн бүтцийг тодорхойлно:
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, алдаа зохицуулах, хариуны загвар тодорхойлох аргыг дэлгэрэнгүй сурна.