O documento discute integração contínua, arquitetura de sistemas operacionais Node.js e REST. Ele apresenta exemplos de código Node.js para criar servidores e rotas, e define REST como um estilo arquitetural para sistemas hipermídia distribuídos.
A integração contínuaé
uma prática de
desenvolvimento de
software de DevOps em
que os desenvolvedores,
com frequência, juntam
suas alterações de
código em um repositório
central. Depois disso,
criações e testes são
executados.
'use strict';
const http= require('http');
http
.createServer((req, res) => {
res.writeHead(200, {'Content-type': 'text/html'});
res.end('<h1>Hello NodeJS</h1>');
})
.listen(3000, () => console.log('Server running on port
3000'));
Alo Mundo
32.
'use strict';
const http= require('http');
const url = require('url');
let routes = {
'GET': {
'/': (req, res) => {
res.writeHead(200, {'Content-type': 'text/html'});
res.end('<h1>Hello Router</h1>');
},
'/about': (req, res) => {
res.writeHead(200, {'Content-type': 'text/html'});
res.end('<h1>This is the about page</h1>');
},
'/api/getinfo': (req, res) => {
// fetch data from db and respond as JSON
res.writeHead(200, {'Content-type': 'application/json'});
res.end(JSON.stringify(req.queryParams));
}
},
'POST': {
},
'NA': (req, res) => {
res.writeHead(404);
res.end('Content not found!');
}
}
33.
function router(req, res){
let baseURI = url.parse(req.url, true);
let resolveRoute = routes[req.method][baseURI.pathname];
if(resolveRoute != undefined) {
req.queryParams = baseURI.query;
resolveRoute(req, res);
} else {
routes['NA'](req, res);
}
}
http.createServer(router).listen(3000, () => {
console.log('Server running on port 3000');
});
ROTAS
36.
A Representational StateTransfer
(REST), em português Transferência
de Estado Representacional, é uma
abstração da arquitetura da World
Wide Web (Web), um estilo arquitetural
que consiste de um conjunto
coordenado de restrições arquiteturais
aplicadas a componentes, conectores
e elementos de dados dentro de um
sistema de hipermídia distribuído. O
REST ignora os detalhes da
implementação de componente e a
sintaxe de protocolo com o objetivo de
focar nos papéis dos componentes,
nas restrições sobre sua interação
com outros componentes e na sua
interpretação de elementos de dados
significantes.