Response-modeller og statuskoder
Lær at definere eksplicitte response-modeller og angive passende HTTP-statuskoder for forskellige API-operationer.
Response-modeller og statuskoder er en gratis Bootcamp i FastAPI-backendudvikling-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Bootcamp i FastAPI-backendudvikling, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Bootcamp i FastAPI-backendudvikling-kurset indeholder 4 lektioner i alt.
API-svar: Det grundlæggende
Når du sender en forespørgsel til et API, sender serveren et svar tilbage. Dette svar indeholder ikke kun data, men også vigtige oplysninger om resultatet af forespørgslen.
FastAPI gør det nemt at returnere data, normalt som JSON. Men vi kan gøre vores API'er endnu bedre ved at være tydelige om, hvilke data vi forventer, og hvad der skete.
Hvorfor bruge svarmodeller?
Svarmodeller definerer den nøjagtige struktur for de data, dit API sender tilbage. Det er afgørende af flere årsager:
- Datakonsistens: Sikrer, at dit API altid returnerer data i et forudsigeligt format.
- Automatisk dokumentation: FastAPI genererer automatisk OpenAPI-dokumentation, der viser den forventede svarstruktur.
- Datavalidering: FastAPI kan validere de udgående data mod din model og opdage fejl, før dataene sendes.
Definér en enkel svarmodel
Vi bruger Pydantic-modeller til at definere svarstrukturer. Derefter fortæller vi FastAPI, hvilken model der skal bruges, med parameteren response_model i vores slutpunktsdekorator.
Prøv at køre dette eksempel, og kontrollér slutpunktet /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 --reloadReturnér lister med svarmodeller
Hvad nu, hvis dit slutpunkt returnerer en liste med elementer? Du kan angive dette i response_model ved at bruge Pythons type List fra modulet typing.
Det fortæller FastAPI, at den skal forvente en liste, hvor hvert element passer til din Pydantic-model.
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 --reloadForstå HTTP-statuskoder
Ud over dataene indeholder hvert API-svar en HTTP-statuskode. Dette trecifrede tal fortæller klienten, hvad resultatet af dens forespørgsel blev.
- 2xx Succes: Forespørgslen blev modtaget, forstået og accepteret korrekt. (f.eks. 200 OK, 201 Created)
- 4xx Klientfejl: Klienten begik en fejl. (f.eks. 400 Bad Request, 404 Not Found)
- 5xx Serverfejl: Serveren kunne ikke opfylde en tilsyneladende gyldig forespørgsel. (f.eks. 500 Internal Server Error)
FastAPIs standardstatuskoder
FastAPI tildeler automatisk standardstatuskoder baseret på HTTP-metoden:
- GET:
200 OK - POST:
200 OK(men ofte er201 Createdbedre) - PUT/DELETE:
200 OK
Selvom disse standarder fungerer, bliver dit API mere præcist og brugervenligt, hvis du angiver statuskoder eksplicit.
Angivelse af brugerdefinerede successtatuskoder (201)
For handlinger, der opretter en ny ressource (f.eks. en POST-forespørgsel), er det bedste praksis at returnere statuskoden 201 Created. Du kan angive den direkte i din path operation-decorator.
Kør dette, og se netværkssvarkoden!
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 --reloadHåndtering af fejl med HTTPException (404)
Når en anmodet ressource ikke findes, bør du returnere statuskoden 404 Not Found. FastAPI tilbyder HTTPException, så du nemt kan udløse disse fejl.
Det stopper udførelsen og returnerer et standardiseret JSON-fejlsvar.
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 --reloadKombination af modeller og statuskoder
Du vil ofte bruge både svarmodeller og brugerdefinerede statuskoder sammen. En vellykket opdatering kan f.eks. returnere 200 OK med den opdaterede ressource, mens en mislykket opdatering kan returnere 400 Bad Request.
Det skaber robust og forudsigelig API-adfærd.
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 --reloadHurtigt tjek: Statuskoder
En klient sender en POST-forespørgsel for at oprette en ny bruger. Serveren behandler forespørgslen korrekt og gemmer brugerdataene. Hvilken HTTP-statuskode er mest passende at returnere?
Opsummering: Tydelige svar
I denne lektion lærte du at gøre dine FastAPI-svar tydelige og forudsigelige. Vi gennemgik:
- Definition af svarmodeller med Pydantic for ensartede data og automatisk dokumentation.
- Forståelse af og eksplicit angivelse af HTTP-statuskoder som
201 Createdsamt håndtering af fejl medHTTPExceptionfor404 Not Found.
Disse metoder forbedrer i høj grad dit APIs brugervenlighed og robusthed.
Lær Bootcamp i FastAPI-backendudvikling med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 21
- Lektioner
- 84
Ofte stillede spørgsmål
Er lektionen “Response-modeller og statuskoder” gratis?
Ja — alle 3 lektioner i læringssporet Bootcamp i FastAPI-backendudvikling, inklusive “Response-modeller og statuskoder”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Bootcamp i FastAPI-backendudvikling-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Response-modeller og statuskoder”?
Lær at definere eksplicitte response-modeller og angive passende HTTP-statuskoder for forskellige API-operationer. Du øver dig i Bootcamp i FastAPI-backendudvikling med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Bootcamp i FastAPI-backendudvikling?
Der kræves ingen tidligere erfaring. Bootcamp i FastAPI-backendudvikling på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Response-modeller og statuskoder”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Bootcamp i FastAPI-backendudvikling-lektion?
Ja. Alle Bootcamp i FastAPI-backendudvikling-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Pydantic-modeller til request body
- Response-modeller og statuskoder
- Formulardata og filuploads
- Headers, cookies og brugerdefinerede responser