5.8.1. Eerste webserver#
NodeRed is een HTTP-server op basis van Node.js. Dit kun je vergelijken met Apache of Nginx op andere systemen. Met NodeRed kun je snel een simpele webserver maken. We gebruiken dit voor het bestuderen van het HTTP-protocol.
We gebruiken hiervoor de volgende knopen:
figuur |
naam |
soort node |
http-input-node |
input |
|
http-response-node |
output |
|
template-node |
in-out |
Een HTTP-request van een browser bevat onder andere de volgende onderdelen:
de HTTP-request method, bijvoorbeeld
GET
ofPOST
.het pad-gedeelte van de URL van het HTTP-request, bijvoorbeeld:
/hello
.
Opdracht A
Maak met de bovenstaande flow een simpele webserver in NodeRed:
De eerste node in deze HTTP-flow is een http-input-node. Configureer deze als volgt (dubbel-klik op de node):
method:
GET
URL:
/hello
De tweede node is een template-node. Configuratie:
Format:
Mustache template
Template:
<h1>Hello World!<h1>
De derde node is een HTTP-response node. Configureren is niet nodig.
Voor het testen verbind je een debug-node met de output van de http-input-node. Configuratie:
Output:
complete msg object
“Deploy”
Test de webserver. Geef in een browser de URL van je website op:
voor FRED: de URL van je NodeRed-instantie, gevolgd door
/api/hello
. Bijvoorbeeld:https://anna.fred.sensetecnic.com/api/hello
voor een Raspberry Pi: de URL van de NodeRed-instantie, gevolgd door
/hello
, bijvoorbeeld:http://192.168.1.201:1880/hello
In het geval van FRED moet je dit doen in een venster van de browser waarmee je ingelogd bent bij FRED. Dit betekent dat alleen jij deze website kunt zien, anderen niet. Dit is een beperking van de gratis versie van FRED. Een “normale” NodeRed-installatie heeft deze beperking niet: iedereen kan dan je webpagina zien.
Als alles goed gaat, krijg je als response in de browser krijg je: Hello World!
Via de debug-output kun je de binnenkomende HTTP-requests bekijken.
zoek in de debug-output in NodeRed naar het
req
-deel van het msg-object. Daarin vind je onder andere de veldenURL
enmethod
. Controleer of deze kloppen met wat je verwacht.
Opmerking Een Mustache-template wordt automatisch omgezet in de bijbehorende HTML-code.
Je kunt ook de pure HTML invullen, als Format geef je dan plain text
,
en voor de syntax highlight gebruik je HTML
.