Contenido del curso

JSONResponse: Tipos de respuestas en FastAPI

Resumen

¿Qué tipos de respuestas permite FastAPI?

FastAPI brilla por su capacidad de manejar múltiples tipos de respuestas, adecuándose a las diversas necesidades de la aplicación. A continuación, exploramos los diferentes tipos de respuestas que puedes utilizar en FastAPI, dotando a tu aplicación de la flexibilidad y eficiencia necesarias para satisfacer prácticamente cualquier requerimiento.

¿Cómo enviar respuestas en formato JSON?

El formato JSON es uno de los más utilizados en aplicaciones web debido a su simplicidad y legibilidad. FastAPI ofrece la clase JSONResponse para enviar estos tipos de respuestas, facilitando una estructura de datos clara y comprensible para el cliente. Supongamos que tienes una lista de películas que deseas enviar; puedes hacerlo de la siguiente manera:

from fastapi.responses import JSONResponse # Suponiendo que tenemos una lista de películas movies = [{"title": "Inception", "director": "Christopher Nolan"}, {"title": "Parasite", "director": "Bong Joon-ho"}] @app.get("/movies") def get_movies(): return JSONResponse(content=movies)

Lo crucial aquí es especificar el contenido que se enviará al cliente utilizando el parámetro content.

¿Cómo manejar las respuestas para operaciones POST, PUT y DELETE?

Para las operaciones que no involucran el envío directo de un objeto completo, es más útil devolver un mensaje como respuesta. Este mensaje suele ser un diccionario que indica el resultado de la operación, ya sea un registro, modificación, o eliminación. Por ejemplo:

@app.post("/register") def register_movie(): # Lógica para registrar una película return JSONResponse(content={"message": "Película registrada correctamente"}) @app.put("/modify/{movie_id}") def modify_movie(movie_id: int): # Lógica para modificar una película return JSONResponse(content={"message": "Película modificada correctamente"}) @app.delete("/delete/{movie_id}") def delete_movie(movie_id: int): # Lógica para eliminar una película return JSONResponse(content={"message": "Película eliminada correctamente"})

¿Cómo definir el modelo de respuesta en FastAPI?

FastAPI permite definir claramente los esquemas de respuesta, lo cual es sumamente útil para la documentación y la validación de las respuestas esperadas. Utiliza response_model para especificar el esquema que la API devolverá.

Para implementar esto, puedes seguir estos pasos:

  1. Importar el tipo List desde typing: necesario si el modelo de respuesta es una lista de objetos.

  2. Definir tu modelo de respuesta utilizando Pydantic: Pydantic es ideal para especificar cómo debe lucir el objeto que estás enviando.

  3. Añadir response_model en tu ruta: facilita la claridad en la documentación automática y mejora la comunicación con los clientes sobre lo que pueden esperar de la API.

Aquí tienes un ejemplo:

from typing import List from pydantic import BaseModel class Movie(BaseModel): title: str director: str @app.get("/movies", response_model=List[Movie]) def get_movies(): return [{"title": "Inception", "director": "Christopher Nolan"}, {"title": "Parasite", "director": "Bong Joon-ho"}]

FastAPI generará automáticamente la documentación de tu API indicando el esquema completo de respuesta, mejorando la experiencia del desarrollador al interactuar con tu API.

FastAPI continúa ofreciendo características sorprendentes que facilitan manejar respuestas de manera eficiente. No dudes en seguir explorando y aprendiendo más sobre las capacidades de esta poderosa herramienta para que puedas aprovechar al máximo su potencial en tus desarrollos. Continuar aprendiendo sobre cómo manejar respuestas enriquecen tus habilidades y te preparan para crear aplicaciones cada vez más robustas y adaptadas a las necesidades de tus usuarios.