NOTAS WEB
Curso Python: Operaciones con 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:
Desarrollador de software con más de 7 años de experiencia, especializado en desarrollo web y backend. Con habilidades demostradas en PHP, Laravel, Symfony, y una amplia gama de tecnologías modernas. Apasionado por el diseño y desarrollo de software.
[…] Curso Python: Operaciones con FastAPI […]