Svarmodeller och statuskoder
Lär er definiera explicita svarmodeller och ange lämpliga HTTP-statuskoder för olika API-operationer.
Svarmodeller och statuskoder är en gratis lektion i Bootcamp i backendutveckling med FastAPI på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Bootcamp i backendutveckling med FastAPI, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Bootcamp i backendutveckling med FastAPI innehåller totalt 4 lektioner.
API-svar: grunderna
När ni skickar en förfrågan till ett API skickar servern tillbaka ett svar. Svaret består inte bara av data, utan innehåller också viktig information om resultatet av förfrågan.
FastAPI gör det enkelt att returnera data, vanligtvis som JSON. Men vi kan göra våra API:er ännu bättre genom att vara tydliga med vilken data som förväntas och vad som har hänt.
Varför använda response-modeller?
Response-modeller definierar den exakta strukturen för den data som ert API skickar tillbaka. Detta är viktigt av flera skäl:
- Datakonsistens: Säkerställer att ert API alltid returnerar data i ett förutsägbart format.
- Automatisk dokumentation: FastAPI genererar automatiskt OpenAPI-dokumentation som visar den förväntade svarsstrukturen.
- Datavalidering: FastAPI kan validera utgående data mot er modell och upptäcka fel innan datan skickas.
Definiera en enkel response-modell
Vi använder Pydantic-modeller för att definiera svarsstrukturer. Sedan anger vi vilken modell FastAPI ska använda med parametern response_model i vår endpoint-dekorator.
Prova att köra det här exemplet och kontrollera endpointen /docs!
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Product(BaseModel):
name: str
price: float
is_available: bool = True
@app.get("/products/single", response_model=Product)
def get_single_product():
return {"name": "Coffee Mug", "price": 9.99, "is_available": True}
# To run: uvicorn main:app --reloadReturnera listor med response-modeller
Vad händer om er endpoint returnerar en lista med objekt? Ni kan ange detta i response_model genom att använda Pythons typ List från modulen typing.
Detta talar om för FastAPI att förvänta sig en lista där varje objekt överensstämmer med er Pydantic-modell.
from fastapi import FastAPI
from pydantic import BaseModel
from typing import List
app = FastAPI()
class Book(BaseModel):
title: str
author: str
@app.get("/books", response_model=List[Book])
def get_all_books():
return [
{"title": "The Hobbit", "author": "J.R.R. Tolkien"},
{"title": "1984", "author": "George Orwell"}
]
# To run: uvicorn main:app --reloadFörstå HTTP-statuskoder
Utöver data innehåller varje API-svar en HTTP-statuskod. Det här tresiffriga talet informerar klienten om resultatet av dess begäran.
- 2xx lyckat: Begäran togs emot, tolkades och accepterades utan problem. (t.ex. 200 OK, 201 Created)
- 4xx klientfel: Klienten gjorde ett fel. (t.ex. 400 Bad Request, 404 Not Found)
- 5xx serverfel: Servern kunde inte uppfylla en till synes giltig begäran. (t.ex. 500 Internal Server Error)
FastAPI:s standardstatuskoder
FastAPI tilldelar automatiskt standardstatuskoder baserat på HTTP-metoden:
- GET:
200 OK - POST:
200 OK(men ofta är201 Createdbättre) - PUT/DELETE:
200 OK
Även om dessa standardvärden fungerar blir ditt API mer precist och användarvänligt om du anger statuskoder uttryckligen.
Ange anpassade lyckade statuskoder (201)
För åtgärder som skapar en ny resurs, till exempel en POST-begäran, är det bästa praxis att returnera statuskoden 201 Created. Du kan ange detta direkt i din sökvägsdekoratör.
Kör detta och observera nätverkssvarets statuskod!
from fastapi import FastAPI, status
from pydantic import BaseModel
app = FastAPI()
class NewItem(BaseModel):
name: str
description: str | None = None
@app.post("/items", status_code=status.HTTP_201_CREATED)
def create_item(item: NewItem):
# Imagine saving 'item' to a database here
return {"message": "Item created successfully", "item": item}
# To run: uvicorn main:app --reloadHantera fel med HTTPException (404)
När en begärd resurs inte hittas bör du returnera statusen 404 Not Found. FastAPI tillhandahåller HTTPException för att enkelt kasta sådana fel.
Detta avbryter körningen och returnerar ett standardiserat JSON-felsvar.
from fastapi import FastAPI, HTTPException, status
app = FastAPI()
fake_items_db = {"foo": {"name": "Foo"}, "bar": {"name": "Bar"}}
@app.get("/items/{item_id}")
def read_item(item_id: str):
if item_id not in fake_items_db:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Item not found")
return fake_items_db[item_id]
# To run: uvicorn main:app --reloadKombinera modeller och statuskoder
Ofta använder du både svarsmodeller och anpassade statuskoder tillsammans. En lyckad uppdatering kan till exempel returnera 200 OK med den uppdaterade resursen, medan en misslyckad uppdatering kan returnera 400 Bad Request.
Detta skapar ett robust och förutsägbart API-beteende.
from fastapi import FastAPI, status
from pydantic import BaseModel
app = FastAPI()
class UserOut(BaseModel):
id: int
username: str
@app.put("/users/{user_id}", response_model=UserOut, status_code=status.HTTP_200_OK)
def update_user(user_id: int, new_username: str):
# Imagine updating user in DB
if user_id == 1:
return {"id": user_id, "username": new_username}
return {"id": user_id, "username": "default_user"}
# To run: uvicorn main:app --reloadSnabb kontroll: statuskoder
En klient skickar en POST-begäran för att skapa en ny användare. Servern behandlar begäran och sparar användaruppgifterna utan problem. Vilken HTTP-statuskod är lämpligast att returnera?
Sammanfattning: tydliga svar
I den här lektionen har du lärt dig att göra dina FastAPI-svar tydliga och förutsägbara. Vi gick igenom:
- Hur man definierar svarsmodeller med Pydantic för konsekventa data och automatisk dokumentation.
- Hur man förstår och uttryckligen anger HTTP-statuskoder som
201 Created, eller hanterar fel medHTTPExceptionför404 Not Found.
Dessa metoder förbättrar avsevärt ditt API:s användbarhet och robusthet.
Lär dig Bootcamp i backendutveckling med FastAPI med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 21
- Lektioner
- 84
Vanliga frågor
Är lektionen ”Svarmodeller och statuskoder” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Bootcamp i backendutveckling med FastAPI, inklusive ”Svarmodeller och statuskoder”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Bootcamp i backendutveckling med FastAPI innehåller totalt 4 lektioner.
Vad lär jag mig i ”Svarmodeller och statuskoder”?
Lär er definiera explicita svarmodeller och ange lämpliga HTTP-statuskoder för olika API-operationer. Ni övar på Bootcamp i backendutveckling med FastAPI med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Bootcamp i backendutveckling med FastAPI?
Du behöver inga förkunskaper. Utbildningen i Bootcamp i backendutveckling med FastAPI på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Svarmodeller och statuskoder”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Bootcamp i backendutveckling med FastAPI-lektionen?
Ja. Varje Bootcamp i backendutveckling med FastAPI-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Pydantic-modeller för request body
- Svarmodeller och statuskoder
- Formulärdata och filuppladdningar
- Headers, cookies och anpassade svar