Study
FastAPI

CRUD Lengkap dengan Database

Penjelasan

Pola CRUD di FastAPI biasanya memisahkan model SQLAlchemy (representasi tabel database) dari model Pydantic (skema request/response), lalu mengonversi antar keduanya di tiap endpoint. Pemisahan ini mencegah struktur database bocor langsung ke API publik.

Contoh Konsep

@app.post('/catatan', response_model=CatatanOut)
def buat_catatan(catatan: CatatanIn, db: Session = Depends(get_db)):
    baru = CatatanModel(judul=catatan.judul, isi=catatan.isi)
    db.add(baru)
    db.commit()
    db.refresh(baru)
    return baru

@app.delete('/catatan/{catatan_id}')
def hapus_catatan(catatan_id: int, db: Session = Depends(get_db)):
    db.query(CatatanModel).filter(CatatanModel.id == catatan_id).delete()
    db.commit()
    return {'pesan': 'dihapus'}

Praktikum

Buat endpoint POST '/catatan' yang menyimpan CatatanModel baru ke database lewat db.add(), db.commit(), db.refresh().

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

db.refresh(baru) wajib dipanggil setelah commit kalau kamu butuh nilai yang di-generate database (mis. id auto-increment) sebelum data dikembalikan sebagai response.