Cómo servir un API Rest con Json desde ESP8266


Continuamos con la serie de entradas dedicadas al ESP8266 viendo cómo servir un API Rest correctamente estructurado desde un ESP8266.

En la entrada anterior vimos cómo consumir un API Rest actuando como cliente. Recordamos que el API Rest se ha convertido en un estándar en la comunicación Web en el que, de forma muy resumida, las acciones se trasmiten a través de peticiones HTTP y usamos el formato Json para el intercambio de datos.

De igual forma que en la entrada anterior aprendimos a conectarnos a un API Rest existente, por ejemplo, en otro servidor, para poder realizar acciones desde el ESP8266, es interesante que cuando el ESP8266 actué como servidor proporcione su propio API Rest como forma de comunicación.

Es precisamente a lo que vamos a dedicar esta entrada, a configurar un ESP8266 como servidor de un API Rest, interpretar las peticiones y sus datos para ejecutar acciones, e intercambiar información empleando la librería Arduino Json que vimos en esta entrada.

Anuncio:

Por ejemplo, podríamos devolver los datos de un sensor de temperatura o humedad. O ejecutar acciones como mover un robot, o accionar un mecanismo. O incluso, simplemente comunicarnos e intercambiar información con otro dispositivo, como por ejemplo una Raspberry PI o incluso otro ESP8266.

Básicamente vamos a emular el API Rest que usamos en todas las entradas, que tenéis disponible en este enlace en versión Node.js, y que empleamos como servidor en la entrada anterior donde el ESP8266.

El código aquí empieza a ser algo avanzado. En realidad, vamos a ver que no es tan difícil. Pero si que resulta interesante que tengáis leídas y bien leídas los tutoriales anteriores sobre el ESP8266.

Así que ¡Vamos allá! Nuestro código del programa principal queda realmente sencillo, como viene siendo habitual.

La mayor parte de la 'magia' ocurre en el fichero 'Server.hpp', donde asociamos los distintos verbos y acciones disponibles en el ejemplo a las funciones correspondientes de nuestro API.

Estas funciones del API las tenemos definidas en el fichero 'API.hpp' (lógico ¿verdad?).

Finalmente, siguiendo la filosofía de la serie de realizar componentes reutilizables para mejorar la limpieza de nuestros proyectos, tenemos el fichero 'ESP8266_Utils_APIREST.hpp' que ya usamos en la entrada anterior, con funciones útiles para nuestros API Rest.

Este fichero contiene funciones reutilizables que podemos emplear en nuestro proyecto, y que son empleadas por el fichero 'API.hpp' para realizar el trabajo del API Rest.

Si cargamos este código en el ESP8266, y lanzamos las peticiones correspondientes a nuestro API Rest desde el Postman, veremos que obtenemos las respuestas correctamente.

También podemos verificar que todo funciona correctamente desde la consola de puerto serie de Arduino.

¡Ahí es nada! Ya hemos aprendido a configurar y servir un API Rest correctamente formateado desde un ESP8266 usando formato Json para el intercambio de datos. Podéis usar la base de este ejemplo en vuestros proyectos para proporcionar una forma normalizada de comunicación.

¿Entonces, ya hemos terminado? ¡Para nada! Consumir y, especialmente, servir API Rest es un importante hito en el camino, pero no es un final. Es más bien un buen comienzo. Aún tenemos que ver cómo emplearla en nuestros proyectos, por ejemplo, para controlar un robot o hacer un datalogger.

Y para eso, en las próximas entradas nos centraremos en interactuar con nuestros flamantes API Rest desde páginas web servida al cliente desde el ESP8266. ¡Hasta pronto!

Descarga el código

Todo el código de esta entrada está disponible para su descarga en GitHub.

Si te ha gustado esta entrada y quieres leer más sobre ESP8266 puedes consultar la sección
tutoriales de ESP8266

Anuncio:

Previous Cómo implementar un controlador PID en Arduino
This is the most recent story.
1000