Flask Response API del objeto Response
La clase Response representa la respuesta HTTP devuelta por las funciones de vista de Flask. En la mayoría de los casos no necesitas crearla directamente: Flask convierte automáticamente el valor de retorno de la función de vista en un objeto Response.
Cuando necesites control manual, usamake_response()la función.
Constructor
| Parámetros | Tipo | Valor por defecto | Descripción |
|---|---|---|---|
| response | str / bytes / iterator | Obligatorio | Contenido del cuerpo de la respuesta |
| status | int / str | 200 | Código de estado HTTP o texto de estado, como 404 o "404 Not Found" |
| headers | dict / list | None | Encabezados de respuesta, dict o lista de tuplas (clave, valor) |
| mimetype | str | None | Tipo MIME, como "application/json" |
| content_type | str | None | Encabezado Content-Type, con codificación, como "text/html; charset=utf-8" |
| direct_passthrough | bool | False | Cuando es True, pasa el cuerpo de la respuesta directamente, sin hacer ningún procesamiento |
Atributos principales
| Atributo | Tipo | Descripción |
|---|---|---|
| status | str | Estado de la respuesta (en forma de texto), como "200 OK", "404 Not Found" |
| status_code | int | Código de estado HTTP, como 200, 404 |
| headers | Headers | Objeto de encabezados de respuesta, admite operaciones de tipo diccionario |
| data | bytes | Representación en bytes del cuerpo de la respuesta |
| mimetype | str | Tipo MIME (sin codificación), como "text/html" |
| content_type | str | Content-Type (con codificación), como "text/html; charset=utf-8" |
| content_length | int | Longitud en bytes del cuerpo de la respuesta |
Operaciones con encabezados de respuesta
| Método | Descripción |
|---|---|
| headers.get(key) | Obtener el valor del encabezado de respuesta especificado |
| headers[key] = value | Establecer el encabezado de respuesta |
| headers.update(dict) | Actualizar encabezados de respuesta por lotes |
Operaciones con cookies
| Método | Descripción |
|---|---|
| set_cookie(key, value, max_age, expires, path, domain, secure, httponly, samesite) | Establecer una cookie. max_age es en segundos, expires es datetime, secure solo HTTPS |
| delete_cookie(key, path, domain) | Eliminar la cookie especificada |
| Parámetro de set_cookie: max_age | Segundos de validez de la cookie, por ejemplo max_age=3600 significa 1 hora |
| Parámetro de set_cookie: secure | Por defecto es el valor de configuración SESSION_COOKIE_SECURE; cuando es True solo se envía por HTTPS |
| Parámetro de set_cookie: httponly | Por defecto es True; prohíbe que JavaScript acceda a esta cookie |
| Parámetro de set_cookie: samesite | "Strict", "Lax" o None; controla el comportamiento de envío de cookies entre sitios |
Otros métodos
| Método | Descripción |
|---|---|
| get_json(force=False, silent=False) | Parsea el cuerpo de la respuesta como JSON (principalmente para pruebas) |
| freeze() | Congela la respuesta en un estado inmutable |
| force_type(response, environ) | Método de clase; convierte por fuerza respuestas de otros tipos al tipo Response |
Ejemplo de código
Ejemplo
from flask import Flask, make_response
app = Flask(__name__)
@app.route("/custom")
def custom_response():
# Usa make_response para construir la respuesta manualmente
resp = make_response("<h1>Hello, EJEMPLO!</h1>")
# Establecer el código de estado
resp.status_code = 201
# Establecer encabezado de respuesta personalizado
resp.headers["X-Custom-Header"] = "my-value"
# Establecer cookie
resp.set_cookie("theme", "dark", max_age=86400) # Válida por 24 horas
resp.set_cookie("lang", "zh-CN", samesite="Lax") # Restricción SameSite
return resp
@app.route("/delete-cookie")
def delete_cookie():
resp = make_response("Cookie eliminada")
resp.delete_cookie("theme")
return resp
@app.route("/api/data")
def api_data():
# Devuelve directamente un dict; Flask lo serializa automáticamente como JSON Response
return {"status": "ok", "data": [1, 2, 3]}
app = Flask(__name__)
@app.route("/custom")
def custom_response():
# Usa make_response para construir la respuesta manualmente
resp = make_response("<h1>Hello, EJEMPLO!</h1>")
# Establecer el código de estado
resp.status_code = 201
# Establecer encabezado de respuesta personalizado
resp.headers["X-Custom-Header"] = "my-value"
# Establecer cookie
resp.set_cookie("theme", "dark", max_age=86400) # Válida por 24 horas
resp.set_cookie("lang", "zh-CN", samesite="Lax") # Restricción SameSite
return resp
@app.route("/delete-cookie")
def delete_cookie():
resp = make_response("Cookie eliminada")
resp.delete_cookie("theme")
return resp
@app.route("/api/data")
def api_data():
# Devuelve directamente un dict; Flask lo serializa automáticamente como JSON Response
return {"status": "ok", "data": [1, 2, 3]}