Menangani error

Pengantar FastAPI

Matt Eckerle

Software and Data Leader

Dua Alasan Utama Menangani Error

Error pengguna

  • URI tidak valid atau kedaluwarsa
  • Input hilang atau salah
@app.delete("/items")
def delete_item(item: Item):
    if item.id not in item_ids:
        # Return an error
    else:
        crud.delete_item(item)
        return {}

Error server

  • Terjadi hal lain
@app.delete("/items")
def delete_item(item: Item):
    try:
        crud.delete_item(item)
    except Exception:
        # Return an error
    return {}
Pengantar FastAPI

Kode Status HTTP: "Tingkat Peringatan"

  • Memungkinkan API memberi status pada respons
    • Berhasil, gagal, error, dll.
  • Kode spesifik didefinisikan di protokol HTTP
  • Rentang: 100 - 599
  • Dikategorikan menurut angka pertama (1 -5)
  1. Respons informasional (100 - 199)
  2. Respons sukses (200 - 299)
  3. Pesan pengalihan (300 - 399)
  4. Respons error klien (400 - 499)
  5. Respons error server (500 - 599)
1 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
Pengantar FastAPI

Kode Status HTTP Umum

Sukses (200 - 299)

  • 200 OK
    • Respons sukses bawaan
  • 201 Created
    • Khusus untuk operasi POST
  • 202 Accepted
    • Belum final. "Sedang diproses"
  • 204 No Content
    • Berhasil! Tidak ada konten

Respons lain

  • 301 Moved Permantently
    • URI berubah permanen
  • 400 Bad Request
    • Error klien
  • 404 Not Found
    • Server tidak menemukan resource yang diminta
  • 500 Internal Server Error
    • Server mengalami situasi yang tidak tahu cara menanganinya
Pengantar FastAPI

Menangani Error dengan Kode Status

from fastapi import FastAPI, HTTPException

app = FastAPI()

@app.delete("/items")
def delete_item(item: Item):
    if item.id not in item_ids:
        # Send response with status 404 and specific error message
        raise HTTPException(status_code=404, detail="Item not found.")
    else:
        delete_item_in_database(item)
        return {}
Pengantar FastAPI

Ayo berlatih!

Pengantar FastAPI

Preparing Video For Download...