0Pricing
Python Academy · Pelajaran

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=false

Beberapa 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=web

Isi 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 needed

Alias 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=python

Pemeriksaan 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

  1. Penyiapan Proyek FastAPI dan Endpoint Pertama
  2. Parameter Jalur, Parameter Kueri, dan Body Permintaan
  3. Injeksi Dependensi dan Autentikasi
  4. Endpoint Asinkron dan Integrasi Database
← Kembali ke Python Academy