Módulo HTTP Node.js


O módulo HTTP integrado

O Node.js tem um módulo integrado chamado HTTP, que permite que o Node.js transfira dados pelo Hyper Text Transfer Protocol (HTTP).

Para incluir o módulo HTTP, use o require()método:

var http = require('http');

Node.js como servidor web

O módulo HTTP pode criar um servidor HTTP que escute as portas do servidor e dê uma resposta ao cliente.

Use o createServer()método para criar um servidor HTTP:

Exemplo

var http = require('http');

//create a server object:
http.createServer(function (req, res) {
  res.write('Hello World!'); //write a response to the client
  res.end(); //end the response
}).listen(8080); //the server object listens on port 8080

A função passada para o http.createServer() método, será executada quando alguém tentar acessar o computador na porta 8080.

Salve o código acima em um arquivo chamado "demo_http.js" e inicie o arquivo:

Inicie demo_http.js:

C:\Users\Your Name>node demo_http.js

Se você seguiu as mesmas etapas em seu computador, verá o mesmo resultado do exemplo: http://localhost:8080



Adicionar um cabeçalho HTTP

Se a resposta do servidor HTTP deve ser exibida como HTML, você deve incluir um cabeçalho HTTP com o tipo de conteúdo correto:

Exemplo

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write('Hello World!');
  res.end();
}).listen(8080);

O primeiro argumento do res.writeHead()método é o código de status, 200 significa que tudo está OK, o segundo argumento é um objeto contendo os cabeçalhos de resposta.


Leia a string de consulta

A função passada para o http.createServer() tem um reqargumento que representa a solicitação do cliente, como um objeto (objeto http.IncomingMessage).

Este objeto tem uma propriedade chamada "url" que contém a parte da url que vem depois do nome do domínio:

demo_http_url.js

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write(req.url);
  res.end();
}).listen(8080);

Salve o código acima em um arquivo chamado "demo_http_url.js" e inicie o arquivo:

Inicie demo_http_url.js:

C:\Users\Your Name>node demo_http_url.js

Se você seguiu as mesmas etapas em seu computador, deverá ver dois resultados diferentes ao abrir esses dois endereços:

http://localhost:8080/verão

Produzirá este resultado:

/summer

http://localhost:8080/inverno

Produzirá este resultado:

/winter

Dividir a string de consulta

Existem módulos integrados para dividir facilmente a string de consulta em partes legíveis, como o módulo URL.

Exemplo

Divida a string de consulta em partes legíveis:

var http = require('http');
var url = require('url');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  var q = url.parse(req.url, true).query;
  var txt = q.year + " " + q.month;
  res.end(txt);
}).listen(8080);

Salve o código acima em um arquivo chamado "demo_querystring.js" e inicie o arquivo:

Inicie demo_querystring.js:

C:\Users\Your Name>node demo_querystring.js

O endereço:

Produzirá este resultado:

2017 July

Leia mais sobre o módulo de URL no capítulo Módulo de URL do Node.js.