Cabeceras en Flask
Cuando respondemos un contenido desde un servidor a un cliente, uno de los contenidos que va en la respuesta (o response) son las cabeceras. Las cabeceras suelen llevar información sobre el contenido de la petición o sobre el servidor que está sirviendo la petición.
En este artículo vamos a ver cómo podemos manejar las cabeceras en Flask para una petición.
Respuestas en Flask
Sección titulada «Respuestas en Flask»Lo primero que tenemos que saber para poder manejar las cabeceras en Flask es cómo son las respuestas que devolvemos al cliente.
Lo más utilizado puede ser:
- Ver una plantilla como respuesta mediante el método
render_template() - Devolver un texto, ya sea plano, XML o JSON
En todos los casos lo que se devuelve es un objeto response.
Crear un objeto response
Sección titulada «Crear un objeto response»Si queremos crear un objeto response vacío podemos utilizar el método make_response(). Así podemos crear el siguiente objeto response con texto:
response = make_response("Texto de la respuesta")Modificar las cabeceras
Sección titulada «Modificar las cabeceras»Lo bueno es que dentro del objeto response existe una colección llamada headers en la que van las cabeceras de la respuesta.
De esta forma, si queremos modificar las cabeceras en Flask y añadir una cabecera personalizada, podremos escribir:
response.headers['X-Mi-Cabecera'] = 'Valor personalizado'O podemos sobrescribir alguna de las cabeceras que se devuelve. Por ejemplo, podemos “tunear” la cabecera del servidor de la siguiente forma:
response.headers['Server'] = 'Mi Servidor Personalizado'Devolver la respuesta
Sección titulada «Devolver la respuesta»Ya solo nos quedará devolver el objeto response como resultado del método:
return responseEjemplo completo
Sección titulada «Ejemplo completo»from flask import Flask, make_response
app = Flask(__name__)
@app.route('/')def index(): response = make_response("Hola con cabeceras personalizadas") response.headers['X-Mi-Cabecera'] = 'Valor personalizado' response.headers['Server'] = 'Mi Servidor Personalizado' return response
if __name__ == '__main__': [app.run](http://app.run/)()Ya hemos visto lo sencillo que es manejar las cabeceras en Flask.
Descarga el código de Cabeceras en Flask
Ejemplo que nos enseña a crear un objeto response por partes para poder modificar las cabeceras en Flask y devolverlas personalizadas.