Felhantering

Introduktion till FastAPI

Matt Eckerle

Software and Data Leader

Två huvudorsaker till felhantering

Användarfel

  • Ogiltig eller inaktuell URI
  • Saknad eller felaktig indata
@app.delete("/items")
def delete_item(item: Item):
    if item.id not in item_ids:
        # Return an error
    else:
        crud.delete_item(item)
        return {}

Serverfel

  • Något annat inträffade
@app.delete("/items")
def delete_item(item: Item):
    try:
        crud.delete_item(item)
    except Exception:
        # Return an error
    return {}
Introduktion till FastAPI

HTTP-statuskoder: "Nivåer av allvar"

  • Gör att API:et kan ange status i svaret
    • Lyckades, misslyckades, fel, osv.
  • Specifika koder definierade i HTTP-protokollet
  • Intervall: 100 - 599
  • Kategoriseras efter första siffran (1 -5)
  1. Informationssvar (100 - 199)
  2. Lyckade svar (200 - 299)
  3. Omdirigeringsmeddelanden (300 - 399)
  4. Klientfelsvar (400 - 499)
  5. Serverfelsvar (500 - 599)
1 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
Introduktion till FastAPI

Vanliga HTTP-statuskoder

Lyckade svar (200 - 299)

  • 200 OK
    • Standardsvar vid lyckat anrop
  • 201 Created
    • Specifikt för POST-operation
  • 202 Accepted
    • Icke-definitiv. "Arbetar på det"
  • 204 No Content
    • Lyckades! Inget mer att säga

Övriga svar

  • 301 Moved Permantently
    • URI ändrades permanent
  • 400 Bad Request
    • Klientfel
  • 404 Not Found
    • Servern hittar inte den begärda resursen
  • 500 Internal Server Error
    • Servern har stött på en situation den inte kan hantera
Introduktion till FastAPI

Felhantering med statuskoder

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 {}
Introduktion till FastAPI

Dags att öva!

Introduktion till FastAPI

Preparing Video For Download...