Write a small node web app with display a result of a rest api.
1. No framework
preparation for local server
mkdir sample
cd sample
npm init
find a sample rest api server
my recommendation is 
https://catfact.ninja/fact
var http = require('http'),
    https = require('https')
http.createServer((req, res) => {
    console.log(req.url)
    https.get('https://catfact.ninja/fact', (r) => {
        console.log(r.statusCode)
        r.on('data', (d) => {
            obj = JSON.parse(d)
            res.writeHead(200, {'Content-Type': 'text/html'})
            res.write(`<h1>${obj.fact}</h1>`)
            res.write(`<h2>${obj.length}</h2>`)
            res.end()
        })
    }).on('error', (e) => {
        console.error(e)
    })
}).listen(8080)
2. Let's use Express
Why Express?
Above code has 2 issues.
- Unexpected 2 request to the catfact occurs because of favicon.
 - No process deal with http chunk.
 
Using the Express is easy way to fix 1st one.
installation web framework
npm install express --save
var express = require('express'),
    app = express(),
    https = require('https')
app.get('/', (req, res) => {
    let data = ''
    https.get('https://catfact.ninja/facts?limit=1000', (r) => {
        console.log(r.statusCode)
        r.on('data', (chunk) => {
            data += chunk
        })
        r.on('end', () => {
            objs = JSON.parse(data)
            let msg
            objs.data.forEach((obj) => msg += `<h1>${obj.fact}</h1>`)
            res.send(msg)
        })
    }).on('error', (e) => {
        console.error(e)
    })
})
app.listen(8080)
Appendix
If you want to pack your app in a docker container.
Read below.
    
Top comments (0)