Parameter Jalur, Parameter Kueri, dan Body Permintaan
Definisikan parameter bertipe dan skema body permintaan dengan Pydantic.
Parameter Jalur, Parameter Kueri, dan Body Permintaan adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.
Validasi Parameter Jalur
Tambahkan validator ke parameter jalur menggunakan Path(): tetapkan batasan ge, le, gt, dan lt.
from fastapi import FastAPI, Path
app = FastAPI()
@app.get("/items/{item_id}")
def get_item(item_id: int = Path(ge=1, le=1000)):
return {"item_id": item_id}
# GET /items/0 → 422 (must be >= 1)Validasi Parameter Kueri
Gunakan Query() untuk menambahkan validasi, nilai default, alias, dan deskripsi ke parameter kueri.
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/search")
def search(
q: str = Query(min_length=2, max_length=50),
page: int = Query(default=1, ge=1),
):
return {"q": q, "page": page}Parameter Kueri Opsional
Gunakan | None = None (Python 3.10+) atau Optional[str] = None agar parameter kueri bersifat opsional.
from fastapi import FastAPI
app = FastAPI()
@app.get("/users")
def list_users(
dept: str | None = None,
active: bool = True
):
return {"dept": dept, "active": active}
# GET /users → dept=None, active=True
# GET /users?dept=HR&active=falseBeberapa Nilai untuk Satu Parameter Kueri
Terima daftar nilai untuk satu parameter kueri dengan list[str] dan Query().
from fastapi import FastAPI, Query
from typing import Annotated
app = FastAPI()
@app.get("/filter")
def filter_items(tags: Annotated[list[str], Query()] = []):
return {"tags": tags}
# GET /filter?tags=python&tags=webIsi Permintaan Bertingkat
Model Pydantic dapat dibuat bertingkat. FastAPI menangani JSON bertingkat secara otomatis.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Address(BaseModel):
street: str
city: str
class User(BaseModel):
name: str
address: Address
@app.post("/users")
def create_user(user: User):
return user.model_dump()Batasan Bidang dalam Pydantic
Gunakan Field() di dalam model untuk menambahkan batasan, nilai default, dan deskripsi ke setiap bidang.
from pydantic import BaseModel, Field
class Product(BaseModel):
name: str = Field(min_length=1, max_length=100)
price: float = Field(gt=0)
quantity: int = Field(ge=0, default=0, description="Items in stock")Isi Permintaan + Jalur + Kueri Bersamaan
Gabungkan ketiga jenis parameter dalam satu titik akhir. FastAPI membedakannya berdasarkan posisi: jalur dalam URL, tipe sederhana sebagai kueri, dan model sebagai isi permintaan.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class ItemUpdate(BaseModel):
name: str
price: float
@app.put("/shops/{shop_id}/items/{item_id}")
def update_item(
shop_id: int,
item_id: int,
item: ItemUpdate,
notify: bool = False,
):
return {"shop": shop_id, "item": item_id,
"data": item.model_dump(), "notify": notify}Unggahan File
Gunakan UploadFile dan File() untuk menerima unggahan file. Akses isinya dengan await file.read().
from fastapi import FastAPI, UploadFile, File
app = FastAPI()
@app.post("/upload")
async def upload(file: UploadFile = File(...)):
content = await file.read()
return {"filename": file.filename, "size": len(content)}Data Formulir
Gunakan Form() untuk menerima data formulir HTML (application/x-www-form-urlencoded atau multipart/form-data).
# pip install python-multipart
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/login")
def login(username: str = Form(...), password: str = Form(...)):
return {"username": username}Ringkasan Validasi Permintaan
FastAPI memvalidasi semua tipe parameter secara otomatis. Input yang tidak valid mengembalikan HTTP 422 dengan kesalahan mendetail sebelum penangan Anda dipanggil.
# Auto-validated:
# - Path params: type coercion, Path() constraints
# - Query params: Query() constraints, type coercion
# - Request body: Pydantic model validation
# - All errors → HTTP 422 Unprocessable Entity
# - No manual validation neededAlias dan Penghentian Dukungan
Gunakan alias= dalam Query() atau Field() untuk menerima nama yang berbeda dalam permintaan, dan deprecated=True untuk menandai parameter lama.
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items")
def get_items(
q: str | None = Query(default=None, alias="search-query"),
old: str | None = Query(default=None, deprecated=True),
):
return {"q": q, "old": old}
# GET /items?search-query=pythonPemeriksaan Singkat
Bagaimana FastAPI membedakan parameter jalur, parameter kueri, dan isi permintaan?
Ringkasan
Gunakan Path()/Query() untuk batasan parameter. Buat model Pydantic bertingkat untuk isi permintaan yang kompleks. Gabungkan parameter jalur, kueri, dan isi permintaan dengan bebas. UploadFile menangani file; Form() menangani formulir HTML. FastAPI memvalidasi semuanya sebelum penangan Anda dijalankan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Parameter Jalur, Parameter Kueri, dan Body Permintaan” gratis?
Ya — teks lengkap “Parameter Jalur, Parameter Kueri, dan Body Permintaan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Parameter Jalur, Parameter Kueri, dan Body Permintaan”?
Definisikan parameter bertipe dan skema body permintaan dengan Pydantic. Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Python Academy?
Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Parameter Jalur, Parameter Kueri, dan Body Permintaan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?
Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Penyiapan Proyek FastAPI dan Endpoint Pertama
- Parameter Jalur, Parameter Kueri, dan Body Permintaan
- Injeksi Dependensi dan Autentikasi
- Endpoint Asinkron dan Integrasi Database