Construir um servidor Web básico com Node.js puro

9d atrás

0 0

Neste tutorial vamos usar a biblioteca http do #NodeJS para construir um servidor Web.

Comece criando um arquivo index.js, e no seu início importe a biblioteca http:

import { createServer } from 'http';

O próximo passo é usar o método createServer, para criar o servidor Web:

const server = createServer((req, res) => {

});
Atente-se que esse método recebe uma função com dois parâmetros: req (requisição) e res (resposta), nós usaremos posteriormente.

Para terminar a primeira parte, inclua o método listen, que irá inicializar o servidor:

const port = 1000;

server.listen(port, () => console.log(`Servidor rodando na porta ${port}`));
Se você rodar esse código, já vai ter um servidor pronto, mas que ainda não responde as requisões HTTP. A seguir vamos continuar, e resolver esse problema.

Volte na função que é passada no método createServer, vamos adicionar algum conteúdo dentro dela.

Dentro do escopo da função adicione o seguinte código:

const { method, url } = req;

if (method === 'GET' && url === '/users') {
    // Método GET /users
} else if (method === 'POST' && url === '/users') {
    // Método POST /users
} else {
    // 404
}
Nesse exemplo, vamos tratar 3 tipos de requisições:
  • GET /users, vai simular uma listagem de usuários
  • POST /users vai simular a criação de um usuário
  • Qualquer outra requisição vai retornar uma mensagem de não encontrado 404

Vamos preencher o primeiro método. Antes disso, adicione antes do método createServer um array com usuários:

const users = [
    { id: 1, name: 'João' },
    { id: 2, name: 'Maria' },
    { id: 3, name: 'José' }
];
Agora volte ao primeiro método:
if (method === 'GET' && url === '/users') {
}
Vamos incluir o seguinte código dentro do if:
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(users));

Ele retorna um sucesso com os usuários em formato JSON.

No segundo método:

else if (method === 'POST' && url === '/users') {
}

Adicione o código a seguir entre o else if:

let body = '';

req.on('data', chunk => body += chunk.toString()); // Concatena o corpo da requisição

// Ao fim da requisição, executa o trecho a seguir
req.on('end', () => {
    try {
        const user = JSON.parse(body); // Converte o JSON para um objeto
        
        users.push(user); // adiciona o novo usuário a lista de usuários

        res.writeHead(201, { 'Content-Type': 'text/plain' });
        res.end('Usuário criado com sucesso!');
    } catch (error) {
        res.writeHead(400, { 'Content-Type': 'text/plain' });
        res.end('Requisição inválida');
    }
});

O método acima vai simular a criação de um usuário. Ele recebe um JSON e simplesmente adiciona no array de usuários. Se essa operação der certo ele retorna um status 201, caso contrário ele retorna um erro 400.

Por fim, volte no último método:

else {

}
Entre o bloco else, vamos adicionar o método que retornará 404, ele será executado quando a requisição pedida não for encontrada. O código é o seguinte:
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('Página não encontrada');

Agora, com o Node.js instalado, você pode rodar o servidor com:

node index.js
Agora é só fazer as requisições no http://localhost:1000

Caso tenha ficado confuso, você pode conferir o código completo no link abaixo:

Node.js basic Web server

Node.js basic Web server. GitHub Gist: instantly share code, notes, and snippets.


Comentários (0)

0/512
Link