Create an HTTP Endpoint
Problem
You want to create an HTTP endpoint that responds to GET requests with some static content, such as an HTML page or CSS stylesheet.
Solution
Use the HTTP In
node to listen for requests, a
Template
node to include the static content, and anHTTP Response
node to reply to the request.Example
Flow JSON
[{"id":"59ff2a1.fa600d4","type":"http in","z":"3045204d.cfbae","name":"","url":"/hello","method":"get","swaggerDoc":"","x":100,"y":80,"wires":[["54c1e70d.ab3e18"]]},{"id":"54c1e70d.ab3e18","type":"template","z":"3045204d.cfbae","name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html>\n <head></head>\n <body>\n <h1>Hello World!</h1>\n </body>\n</html>","x":250,"y":80,"wires":[["266c286f.d993d8"]]},{"id":"266c286f.d993d8","type":"http response","z":"3045204d.cfbae","name":"","x":390,"y":80,"wires":[]}]
[~]$ curl https://app_name.herokuapp.com/hello
<html>
<head></head>
<body>
<h1>Hello World!</h1>
</body>
</html>
Discussion
The HTTP In
and HTTP Response
pair of nodes are the starting point for all HTTP endpoints you create.
Any flow that starts with an HTTP In
node must have a
path to an HTTP Response
node otherwise requests will
eventually timeout.
The HTTP Response
node uses the payload
property of
messages it receives as the body of the response. Other properties can be used to
further customize the response - they are covered in other recipes.
The Template
node provides a convenient way to embed
a body of content into a flow. It may be desirable to maintain such static content
outside of the flow.
If you have turned on http authentication then you may need add your userid and password to the curl command. e.g.
[~]$ curl -u userid:password https://app_name.herokuapp.com/hello