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().
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.