Curso Python: Operaciones con FastAPI

FastAPI

Tras haber establecido las bases de Python y FastAPI en el artículo anterior, y familiarizarte con las herramientas esenciales para tu desarrollo como programador, es hora de adentrarnos en la parte práctica de nuestro curso. En esta entrada, te llevaremos a través de las operaciones fundamentales que puedes realizar con FastAPI, explorando cómo manejar las solicitudes y respuestas para construir una API robusta y eficiente. Si te perdiste la introducción o quieres repasar los fundamentos, te invitamos a leer nuestro artículo anterior, «¡Bienvenido al inicio de tu aventura con Python y FastAPI!», donde discutimos desde la instalación de Python y FastAPI hasta la ejecución de tu primer proyecto.

Avanzando con FastAPI: Manejo de Solicitudes y Respuestas

FastAPI se destaca por su capacidad para facilitar el desarrollo de APIs modernas con un código minimalista y una velocidad excepcional. A continuación, exploraremos cómo implementar las operaciones básicas de una API REST: GET, POST, PUT, y DELETE, ofreciendo ejemplos prácticos y consejos para cada uno.

GET: Creando Respuestas HTML

Para la realización de las pruebas, de momento puedes crear un diccionario llamado books, y añadir unos cuantos libros siguiendo por ejemplo está estructura:

books = [{
'id': 1,
'title': 'Clean Code',
'category': 'programación',
'date': '2020-04-05'
}]

El método GET es utilizado para solicitar datos de un recurso específico. FastAPI simplifica la respuesta a estas solicitudes, permitiendo incluso devolver respuestas HTML de manera sencilla.

from fastapi.responses import HTMLResponse

@app.get("/", response_class=HTMLResponse)
def read_root():
    return HTMLResponse("<h1>Hello World</h1>")

Este fragmento de código muestra cómo se puede retornar una respuesta HTML directamente. Esta capacidad es especialmente útil para pruebas rápidas o para retornar documentación o interfaces de usuario simples directamente desde tu API.

Uso de Parámetros Query en FastAPI

FastAPI facilita el manejo de parámetros de consulta, permitiendo filtrar los resultados basados en estos parámetros de una manera muy intuitiva y segura.

@app.get("/books/", tags=['books'])
def get_books_by_category(category: str):
    books_category = []
    for item in books:
        if item["category"] == category:
            books_category.append(item)
    return books_category

En este ejemplo, la función get_books_by_category filtra los libros por categoría, utilizando un parámetro de consulta llamado category.

POST: Creación de Recursos

El método POST se utiliza para enviar datos a un servidor para crear un nuevo recurso. En FastAPI, la inclusión de datos se maneja de manera eficiente a través del uso del modelo Body, que permite especificar los datos esperados del cuerpo de la solicitud.

from fastapi import FastAPI, Body

@app.post("/books/", tags=['books'])
def create_book(id: int = Body(), title: str = Body(), category: str = Body(), date: str = Body()):
    books.append({
        'id': id,
        'title': title,
        'category': category,
        'date': date
    })
    return id

Este código ilustra cómo crear un nuevo libro en nuestra colección, especificando los campos necesarios en el cuerpo de la solicitud.

PUT: Actualización de Recursos

El método PUT se emplea para actualizar datos existentes. FastAPI hace que la actualización de recursos sea sencilla y segura.

@app.put("/books/{id}", tags=['books'])
def update_book(id: int, title: str = Body(), category: str = Body(), date: str = Body()):
    for item in books:
        if item["id"] == id:
            item['title'] = title
            item['category'] = category
            item['date'] = date
    return books

DELETE: Eliminación de Recursos

Finalmente, el método DELETE se utiliza para eliminar recursos. FastAPI proporciona una manera clara y concisa de manejar estas solicitudes.

@app.delete("/books/{id}", tags=['books'])
def delete_book(id: int):
    for item in books:
        if item["id"] == id:
            books.remove(item)
    return books

Buenas Prácticas en el Uso de API REST

El desarrollo de APIs RESTful implica más que simplemente exponer endpoints para crear, leer, actualizar y eliminar recursos. Siguiendo un conjunto de buenas prácticas, puedes asegurar que tu API sea fácil de entender, utilizar y mantener, tanto para ti como para otros desarrolladores. Aquí, profundizaremos en algunas de estas prácticas esenciales.

1. Utiliza Nombres de Ruta Intuitivos y Consistentes

Los endpoints de tu API deben reflejar claramente los recursos que están manipulando. Por ejemplo, si tu API gestiona libros, usar un endpoint como /books para obtener todos los libros o /books/{id} para un libro específico es intuitivo. Mantén una estructura consistente en toda tu API para facilitar su comprensión y uso.

2. Aprovecha los Métodos HTTP Apropiados

Cada acción en tu API debe corresponder al método HTTP adecuado:

  • GET para recuperar recursos.
  • POST para crear nuevos recursos.
  • PUT o PATCH para actualizar recursos existentes (usa PATCH para actualizaciones parciales).
  • DELETE para eliminar recursos.

Esta convención ayuda a los consumidores de tu API a anticipar el efecto de sus llamadas.

3. Estándar en Respuestas y Manejo de Errores

Define un formato estándar para tus respuestas, incluso en casos de error. Esto incluye proporcionar mensajes de error claros y, si es posible, sugerencias para corregir el problema. Por ejemplo, un error de validación de datos podría devolver un código de estado 400 (Bad Request) junto con información sobre qué campo es inválido y por qué.

4. Utiliza Códigos de Estado HTTP Adecuados

Los códigos de estado HTTP son una parte crítica de la comunicación en las APIs REST. Utiliza códigos de estado apropiados para indicar el resultado de una solicitud, como 200 (OK) para respuestas exitosas, 404 (Not Found) cuando un recurso no se puede encontrar, o 500 (Internal Server Error) para errores del servidor.

5. Versionado de la API

El versionado permite que tu API evolucione sin romper las aplicaciones de los consumidores. Puedes versionar tu API incluyendo un número de versión en el URL (por ejemplo, /v1/books) o mediante el uso de encabezados HTTP. Mantén documentadas las diferencias entre versiones para facilitar la transición de los consumidores.

6. Seguridad

Implementa mecanismos de seguridad adecuados desde el inicio. Esto incluye la autenticación (quién eres) y la autorización (qué tienes permitido hacer). Tecnologías como OAuth2 y JWT (JSON Web Tokens) son comunes para estos propósitos. Además, asegura las conexiones con HTTPS para proteger los datos en tránsito.

7. Documentación Clara y Completa

Una API bien documentada es mucho más fácil de adoptar y usar correctamente. Herramientas como Swagger (OpenAPI) y Redoc pueden generar documentación interactiva a partir de tu código, facilitando a los desarrolladores explorar y probar tu API.

8. Limita y Pagina Respuestas Grandes

Para mejorar el rendimiento y la usabilidad, evita devolver grandes conjuntos de datos en una sola respuesta. Implementa paginación y proporciona la capacidad de limitar los resultados. Esto no solo mejora la experiencia del usuario sino que también reduce la carga en tu servidor.

9. Respeta la Caché de las Respuestas

La caché puede reducir significativamente la carga en tu API y mejorar la velocidad de respuesta para los consumidores. Utiliza encabezados HTTP para controlar la caché de las respuestas cuando sea apropiado.

Siguiendo estas buenas prácticas, puedes construir una API RESTful que sea robusta, eficiente y amigable para el desarrollador. Recuerda que el objetivo es facilitar el uso y la integración de tu API, asegurando al mismo tiempo su fiabilidad y mantenibilidad a largo plazo.

Conclusión

FastAPI es un poderoso aliado en el desarrollo de APIs modernas, ofreciendo rapidez, flexibilidad y una amplia gama de herramientas para crear servicios web eficientes y escalables. Al seguir las buenas prácticas mencionadas y aprovechar las características de FastAPI, podrás construir APIs RESTful robustas y mantenibles, capaces de soportar las necesidades de proyectos de cualquier envergadura.

Habiendo cubierto las operaciones básicas con FastAPI, esperamos que te sientas más preparado para avanzar en la construcción de APIs potentes y eficientes. FastAPI te ofrece las herramientas y la flexibilidad necesarias para desarrollar con rapidez, seguridad y eficacia, apoyándote en tu camino hacia convertirte en un desarrollador backend competente. Continúa tu aprendizaje con nosotros y te espero en el siguiente artículo, donde abordaremos las validaciones con Pydantic. Puedes ver el resto de contenido del curso aquí.


Enlaces:

Código del curso

Un comentario

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *