¿Cómo podemos ayudarte?

Peticiones http en node red

Contenido

Acerca del proyecto

En este proyecto vamos a conocer las peticiones básicas http que podemos trabajar en el entorno node red, esto con el fin de iniciar en el mundo del iot de forma fácil, ya que necesitamos crear un servidor y esta plataforma nos brinda la posibilidad de crear un flujo de trabajo de forma rápida y sin realizar programas extensos.

No nos vamos a extender en detalle de como crear un servidos ni de manipulación de los datos, solo vamos a crear las entradas http get, port, put y delete, con estas vamos a ver como recibir parámetros por url y por json, ademas vamos a ver como realizar una respuesta con una simple pagina html y respuesta en formato json.

La idea de este proyecto es conocer otra forma de como podemos recibir datos desde los dispositivos que creemos y de como procesarla, y eto lo hacemos con node res que no se necesita conocer de programación. Explicaremos el paso a paso de cada petición y de como usarla.

Conocimiento previo

Para realizar este proyecto se requiere conocimiento previo de los siguientes temas, si aun no has trabajado con lo que se menciona en la siguiente tabla, allí están los links a los post para que puedas dar un repaso adicional o puedas recordar el conocimiento necesario para poder realizar este proyecto.

Proyecto Descripción
http En este post conocera las diferentes peticiones http que se pueden generar y su definición.
Node red entorno de trabajo En este post encontrara una explicación del uso de node red, ademas de los links en donde podrá realizar la instalación del programa en los diferentes sistemas operativos.
Nodos básicos en node red Definimos cada uno de los nodos básicos y los clasificamos esto es para que se de una idea del funcionamiento de cada uno de ellos.

Request (Petición)

Una petición consiste en los siguientes pasos:

  1. Un comando
  2. Header (opcionales)
  3. Contenido del cuerpo (opcional)

Response (Respuesta)

Una respuesta consiste de los siguienetes pasos

  1. Un código de estado
  2. Headers (opcionales)
  3. Contenido del cuerpo (opcional)

Tipos de peticiones

Para este ejercicio tenemos las siguienetes peticiones creadas, vamos a mostrar primero una tabla con los nodos que estamos usando y su caracteristica para que los tengan en cuenta, luego procedemos a realizar la explicxacion de cada peticion.[1]

get

Para crear la peticion get y dar una respuesta json vamos a crear el siguiente flujo de nodos.

A continuación tenemos los nodos que estamos usando en la petición http y su configuración.

NodoNombreConfiguración
httpin http in
Method
get
URL
/sensor
template template
Name
Page
Property
msg.payload
Template
{ "sitio": "codigoelectronica.com" }
change change
Name
Set Headers
Rules
  • [set: msg.headers] [to: (json):{}]
  • [set: msg.headers.content-type] [to: (string):{application/json}]
httpresponse http response No requiere con el nodo change (Set Headers) esta la respuesta

Este es el código json de la petición para que lo pueda copiar e importar al proyecto.

[{"id":"6515ba4c.015a24","type":"http in","z":"32e06554.dd8dfa","name":"","url":"/sensor","method":"get","upload":false,"swaggerDoc":"","x":110,"y":140,"wires":[["d1778a9e.cbccc8"]]},{"id":"d1778a9e.cbccc8","type":"template","z":"32e06554.dd8dfa","name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"sitio\": \"codigoelectronica.com\" }","x":290,"y":140,"wires":[["f5523a1.de306c8"]]},{"id":"f5523a1.de306c8","type":"change","z":"32e06554.dd8dfa","name":"Set Headers","rules":[{"t":"set","p":"headers","pt":"msg","to":"{}","tot":"json"},{"t":"set","p":"headers.content-type","pt":"msg","to":"application/json","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":140,"wires":[["19f60990.8fa936"]]},{"id":"19f60990.8fa936","type":"http response","z":"32e06554.dd8dfa","name":"","statusCode":"","headers":{},"x":650,"y":140,"wires":[]}]

En la petición get estamos usando el bloque de entrada http donde damos una url, a este nodo lo conectamos al nodo de template donde lo estamos creando la respuesta que queremos visualizar, en este paso podemos obtener la información que nos llega de la petición por medio de payload pero eso lo explico en el siguiente ejemplo. Ahora vamos a crear la respuesta, en este caso usaremos change el cual permite crear los headers de respuesta que en este caso va a ser una respuesta json y por ultimo lo conectamos con el nodo de salida http para que de la respuesta en la petición. Ingresamos en la siguiente url para ver el ejemplo: http://localhost:1880/sensor

Vamos a realizar una petición get a la cual le enviamos parametros por url y retornamos en formato html. Vamos a crear el siguiente flijo.

A continuación tenemos los nodos que estamos usando en la petición http y su configuración.

NodoNombreConfiguración
httpin http in
Method
get
URL
/sensor-params
template template
Name
Page
Property
msg.payload
Template
<html>
    <head></head>
    <body>
        <h1>Nombre: {{payload.name}}</h1>
    </body>
</html>
httpresponse http response Los mensajes enviados a este nodo deben tener su origen en un nodo de entrada http

Este es el código json de la petición para que lo pueda copiar e importar al proyecto.

[{"id":"7e711b75.bca444","type":"template","z":"32e06554.dd8dfa","name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html>\n    <head></head>\n    <body>\n        <h1>Nombre: {{payload.name}}</h1>\n    </body>\n</html>","x":410,"y":320,"wires":[["bdef2a57.63b588"]]},{"id":"e80ea879.ab90b8","type":"http in","z":"32e06554.dd8dfa","name":"","url":"/sensor-params","method":"get","upload":false,"swaggerDoc":"","x":210,"y":320,"wires":[["7e711b75.bca444"]]},{"id":"bdef2a57.63b588","type":"http response","z":"32e06554.dd8dfa","name":"","statusCode":"","headers":{},"x":570,"y":320,"wires":[]}]

Para este ejemplo estamos realizando la misma configuración del paso anterior, solo que en el nodo de template vamos a obtener el valor de parámetro enviado por la url por medio del payload, y no estamos creando los headers, por defecto httpresponse da como salida una respuesta plana. Podemos probar con la siguiente url: http://localhost:1880/sensor-params?name=oscar

post

Para hacer una peticion post cambiamos el metodo en el nodo http, adems vamos a realizar la prueba con el programa postman, aunque puede usar cualquiera con que puedan llamar una url con este tipo de peticion es suficiente.

En esta peticion post enviamos parametros y retornamos una respuesta json, observemos la siguiente imagen:

A continuación tenemos los nodos que estamos usando en la petición http y su configuración.

NodoNombreConfiguración
httpin http in
Method
post
URL
/sensor
template template
Name
Page
Property
msg.payload
Template
{ "Hello":"World","data":"{{payload.data}}","name":"{{payload.name}}"}
change change
Name
Set Headers
Rules
  • [set: msg.headers] [to: (json):{}]
  • [set: msg.headers.content-type] [to: (string):{application/json}]
httpresponse http response No requiere con el nodo change (Set Headers) esta la respuesta

Este es el código json de la petición para que lo pueda copiar e importar al proyecto.

[{"id":"dc7b8f4.1a92c7","type":"http in","z":"32e06554.dd8dfa","name":"","url":"/sensor","method":"post","upload":false,"swaggerDoc":"","x":170,"y":620,"wires":[["1a7de759.c45f79"]]},{"id":"1a7de759.c45f79","type":"template","z":"32e06554.dd8dfa","name":"page","field":"payload","fieldType":"msg","format":"json","syntax":"mustache","template":"{ \"Hello\":\"World\",\"data\":\"{{payload.data}}\",\"name\":\"{{payload.name}}\"}","output":"str","x":350,"y":620,"wires":[["ab093779.bbbcd8"]]},{"id":"ab093779.bbbcd8","type":"change","z":"32e06554.dd8dfa","name":"Set Headers","rules":[{"t":"set","p":"headers","pt":"msg","to":"{}","tot":"json"},{"t":"set","p":"headers.content-type","pt":"msg","to":"application/json","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":620,"wires":[["651b8fa9.78f2a"]]},{"id":"651b8fa9.78f2a","type":"http response","z":"32e06554.dd8dfa","name":"","statusCode":"","headers":{},"x":670,"y":620,"wires":[]}]

En este ejemplo con el post en el nodo template vamos a crear la respuesta que mostraremos en formato json y en esta misma respuesta vamos a mostrar los valores de los parámetros que estamos obteniendo desde la petición para crear la respuesta, creamos los headers con el formato json y realizamos la petición por medio de postman como se observa en la siguiente imagen.

En la petición creamos el json con los parámetros que vamos a enviar.

{
    "name": "hola desde postman 2",
    "data":2
}

La respuesta que nos da podemos ver que a mostrado los parámetros que enviamos desde la petición.

{
    "Hello": "World",
    "data": "2",
    "name": "hola desde postman 2"
}

put y delete

Para el ejemplo de put y delete nos podemos guiar con post, ya que son parecidos en el flujo de bloques y en la forma de enviar los parámetros, en el nodo de http se configura el tipo de petición y se puede hacer el mismo ejemplo de post para probar.



La respuesta que obtenemos es similar y en este tipo de peticiones también las probamos con postman.

Referencias

[1] steves-internet http://www.steves-internet-guide.com/http-basics/, Consultado Agosto 2020

Comentarios

Para dejar el comentario solo necesitamos tu correo que registraste en la pagina, pero si aun no te haz registrado se creara el usuario automaticamente.

Detalle contenido

base-node-red-peticiones-http
Generic placeholder image
Oscar Fernandez Alzate

30, Agosto 2020

364
Categorías
NODE RED