API de l'objet Response de Flask
La classe Response représente la réponse HTTP renvoyée par les fonctions de vue Flask. Dans la plupart des cas, vous n'avez pas besoin de la créer directement—Flask convertit automatiquement les valeurs de retour des fonctions de vue en objets Response.
Lorsqu'un contrôle manuel est nécessaire, utilisez la fonctionmake_response().
Constructeur
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
| response | str / bytes / itérateur | Requis | Contenu du corps de la réponse |
| status | int / str | 200 | Code de statut HTTP ou texte de statut, tel que 404 ou "404 Not Found" |
| headers | dict / list | Aucune | En-têtes de réponse, un dict ou une liste de tuples (clé, valeur) |
| mimetype | str | Aucune | Type MIME, par ex. "application/json" |
| content_type | str | Aucune | En-tête Content-Type, incluant le charset, par ex. "text/html; charset=utf-8" |
| direct_passthrough | bool | False | Lorsque True, transmettre le corps de la réponse directement sans aucun traitement. |
Attributs principaux
| Propriété | Type | Description |
|---|---|---|
| status | str | Statut de réponse (sous forme textuelle), tel que "200 OK" ou "404 Not Found" |
| status_code | int | Codes de statut HTTP, tels que 200, 404 |
| headers | En-têtes | Objet d'en-tête de réponse, prend en charge les opérations de type dictionnaire |
| data | bytes | Représentation en octets du corps de la réponse |
| mimetype | str | Type MIME (sans encodage), tel que "text/html" |
| content_type | str | Content-Type (y compris le jeu de caractères), par ex. "text/html; charset=utf-8" |
| content_length | int | Longueur en octets du corps de la réponse |
Opérations sur les en-têtes de réponse
| Méthodes | Description |
|---|---|
| headers.get(key) | Obtenir la valeur de l'en-tête de réponse spécifié |
| headers[key] = value | Définir les en-têtes de réponse |
| headers.update(dict) | Mettre à jour les en-têtes de réponse par lots |
Opérations sur les cookies
| Méthodes | Description |
|---|---|
| set_cookie(key, value, max_age, expires, path, domain, secure, httponly, samesite) | Définir un cookie. max_age est en secondes, expires est un datetime, secure est réservé à HTTPS |
| delete_cookie(key, path, domain) | Supprimer le cookie spécifié |
| Paramètres de set_cookie : max_age | Durée de vie du cookie en secondes, par ex. max_age=3600 signifie 1 heure |
| Paramètres de set_cookie : secure | Par défaut, la valeur de configuration SESSION_COOKIE_SECURE ; si True, le cookie est envoyé uniquement via HTTPS |
| Paramètres de set_cookie : httponly | Par défaut True, ce qui empêche JavaScript d’accéder à ce cookie |
| Paramètres de set_cookie : samesite | "Strict", "Lax" ou None, contrôlant le comportement d’envoi des cookies intersites |
Autres méthodes
| Méthodes | Description |
|---|---|
| get_json(force=False, silent=False) | Analyse le corps de la réponse en JSON (principalement utilisé pour les tests). |
| freeze() | Fige la réponse dans un état immuable |
| force_type(response, environ) | Méthode de classe qui convertit de force d'autres types de réponses en type Response. |
Exemples de code
Exemple
from flask import Flask, make_response
app = Flask(__name__)
@app.route("/custom")
def custom_response():
# Utiliser make_response pour construire manuellement une réponse
resp = make_response("<h1>Hello, EXAMPLE!</h1>")
# Définir le code d'état
resp.status_code = 201
# Définir des en-têtes de réponse personnalisés
resp.headers["X-Custom-Header"] = "my-value"
# Définir un cookie
resp.set_cookie("theme", "dark", max_age=86400) # Valable pendant 24 heures
resp.set_cookie("lang", "zh-CN", samesite="Lax") # Restriction SameSite
return resp
@app.route("/delete-cookie")
def delete_cookie():
resp = make_response("Cookie supprimé")
resp.delete_cookie("theme")
return resp
@app.route("/api/data")
def api_data():
# Retourner un dict directement ; Flask le sérialise automatiquement en une réponse JSON
return {"status": "ok", "data": [1, 2, 3]}
app = Flask(__name__)
@app.route("/custom")
def custom_response():
# Utiliser make_response pour construire manuellement une réponse
resp = make_response("<h1>Hello, EXAMPLE!</h1>")
# Définir le code d'état
resp.status_code = 201
# Définir des en-têtes de réponse personnalisés
resp.headers["X-Custom-Header"] = "my-value"
# Définir un cookie
resp.set_cookie("theme", "dark", max_age=86400) # Valable pendant 24 heures
resp.set_cookie("lang", "zh-CN", samesite="Lax") # Restriction SameSite
return resp
@app.route("/delete-cookie")
def delete_cookie():
resp = make_response("Cookie supprimé")
resp.delete_cookie("theme")
return resp
@app.route("/api/data")
def api_data():
# Retourner un dict directement ; Flask le sérialise automatiquement en une réponse JSON
return {"status": "ok", "data": [1, 2, 3]}