Configuration de réponse¶
Décorateurs et paramètres pour la gestion des réponses.
response_model¶
response_model: Type[BaseModel] = None
Déclare le modèle de réponse pour une route. Valide et sérialise les réponses.
Exemple :
from pydantic import BaseModel
from typing import List
class Item(BaseModel):
id: int
name: str
price: float
@app.get("/items", response_model=List[Item])
def list_items():
return [
{"id": 1, "name": "Item 1", "price": 9.99},
{"id": 2, "name": "Item 2", "price": 19.99}
]
status_code¶
status_code: int = None
Définit le code de statut HTTP pour les réponses réussies.
Exemple :
@app.post("/items", status_code=201)
def create_item(item: Item):
return item
response_description¶
response_description: str = None
Définit la description de la réponse dans la documentation OpenAPI.
Exemple :
@app.get("/items", response_description="List of all items")
def list_items():
return []
validate_response¶
validate_response: bool = True
Active ou désactive la validation des réponses. La valeur par défaut est True.
Exemple :
@app.get("/fast", validate_response=False)
def fast_endpoint():
# La réponse n'est pas validée
return {"data": "..."}
Désactivez ceci uniquement si vous êtes sûr de la correction des réponses et que vous avez besoin de ignorer la surcharge de validation.
Configuration de sérialisation de réponse¶
Utilisez la configuration du modèle Pydantic pour contrôler la sérialisation.
by_alias¶
class Item(BaseModel):
internal_id: int = Field(alias="id")
model_config = ConfigDict(by_alias=True)
Sérialise les champs en utilisant leurs alias.
exclude_none¶
class Item(BaseModel):
name: str
description: str = None
model_config = ConfigDict(exclude_none=True)
Exclut les champs avec des valeurs None de la réponse.
exclude_unset¶
class Item(BaseModel):
name: str
description: str = "Default"
model_config = ConfigDict(exclude_unset=True)
Exclut les champs qui n’ont pas été explicitement définis.
Sérialisation de champs¶
Contrôlez comment les champs individuels se sérialisent.
alias¶
from pydantic import Field
class Item(BaseModel):
internal_id: int = Field(alias="id")
Utilise un nom différent dans la réponse JSON.
serialization_alias¶
from pydantic import Field
class Item(BaseModel):
internal_id: int = Field(
validation_alias="internalId",
serialization_alias="id"
)
Utilise des noms différents pour la validation et la sérialisation.
field_serializer¶
from pydantic import field_serializer
class Item(BaseModel):
price: float
@field_serializer('price')
def serialize_price(self, value: float) -> str:
return f"${value:.2f}"
Logique de sérialisation personnalisée pour un champ.