Request header parser microservice com NodeJS e Express
Uma requisição para /api/whoami
retorna um objeto JSON com uma key ipaddress
com um valor do IP público do user.
Uma key language
com a linguagem principal, e a key software
com as definições de browser e OS.
Segue o código:
const express = require('express')
const app = express()
//usando a lib padrão http do Node
const http = require('http');
let ip = ''
//pegando o IP público atraves de uma API pública
var options = {
host: 'ipv4bot.whatismyipaddress.com',
port: 80,
path: '/'
};
http.get(options, res => {
res.on("data", chunk => {
ip = chunk.toString();
});
}).on('error', e => {
console.log("error: " + e.message);
});
// montando o objeto que será enviado manipulando o req.headers
const port = process.env.port || 3000
app.get('/api/whoami', (req,res)=>{
let language = []
language.push(req.headers['accept-language'].split(',')[0])
language.push(req.headers['accept-language'].split(',')[1])
res.send({
ipaddress: ip,
language: language.join(','),
software: req.headers['user-agent']
})
})
app.listen(port, ()=>{
console.log(`server running on port ${port}`)
})