7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Flask

Creación de APIs RESTful con Flask: un ORM con SQLAlchemy

Scroll to top
Read Time: 3 mins
This post is part of a series called Building RESTful APIs With Flask.
Building RESTful APIs With Flask: The DIY Approach
Building RESTful APIs With Flask: ORM Independent

Spanish (Español) translation by Andrea Jiménez (you can also view the original English article)

En la primera parte de esta serie de tutoriales de tres partes, vimos cómo escribir APIs RESTful por nosotros mismos utilizando Flask como framework web. El enfoque anterior proporcionaba mucha flexibilidad, pero también incluía escribir una gran cantidad de código que de otro modo podría haberse evitado en casos más genéricos.

En esta parte, usaremos una extensión Flask, Flask-Restless, que simplemente genera APIs RESTful para modelos de base de datos definidos con SQLAlchemy. Tomaré la misma aplicación de ejemplo que en la última parte de esta serie para mantener el contexto y la continuidad.

Instalación de dependencias

Mientras continuamos con la aplicación desde la primera parte, necesitamos instalar solo una dependencia:

La aplicación

Flask-Restless hace que agregar interfaces API RESTful a modelos escritos con SQLAlchemy sea pan comido. En primer lugar, agrega el APIManager REST de la extensión flask.ext.restless al archivo de configuración de la aplicación.

flask_app/my_app/__init__.py

Basta con añadir las dos líneas anteriores al código existente.

flask_app/my_app/catalog/views.py

Este archivo comprende la mayor parte de los cambios de la parte anterior. A continuación se muestra el archivo reescrito completo.

Es bastante evidente cómo funcionaría el código anterior. Acabamos de importar el manager que se creó en un archivo anterior y se usa para crear una API para el modelo Product con los methods (métodos) listados. Podemos añadir más métodos como DELETE, PUT, PATCH, u otros según sea necesario.

Aplicación en acción

Probemos esta aplicación creando algunos productos y enumerándolos. El punto de conexión creado por esta extensión de forma predeterminada es http://localhost:5000/api/product.

Como hice en la última parte de esta serie de tutoriales, probaré esto usando la biblioteca requests a través de la terminal.

Cómo personalizar

Es realmente útil tener las APIs RESTful creadas automáticamente, pero cada aplicación tiene cierta lógica comercial que requiere personalizaciones, validaciones y manejo inteligente/seguro de solicitudes según sea necesario.

Aquí, solicita preprocessors y postprocessors que vengan al rescate. Como indican los nombres, los métodos designados como preprocesadores se ejecutan antes del procesamiento de la solicitud, y los métodos designados como posprocesadores se ejecutan después del procesamiento de la solicitud. create_api() es el lugar donde se definen como diccionarios del tipo de solicitud (GET, POST, entre otros) y los métodos como lista que actuarán como preprocesadores o posprocesadores en la solicitud especificada. A continuación se muestra un ejemplo de la plantilla:

Las solicitudes GET, PUT y PATCH tienen la flexibilidad de ser disparadas para registros individuales y múltiples; por lo tanto, tienen dos tipos cada uno. En el código anterior, observa GET_SINGLE y GET_MANY para las solicitudes GET.

Los preprocesadores y posprocesadores aceptan diferentes parámetros para cada tipo de solicitud y funcionan sin ningún valor de retorno. Esto queda para que lo intentes por cuenta propia.

Conclusión

En esta parte de esta serie de tutoriales, vimos cómo crear una API RESTful usando Flask simplemente agregando un par de líneas a un modelo basado en SQLAlchemy.

En la próxima y última parte de esta serie, hablaré sobre cómo crear una API RESTful usando otra extensión popular de Flask, pero esta vez, la API será independiente de la herramienta de modelado utilizada para la base de datos.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.