DEV Community

Wilson Lucena
Wilson Lucena

Posted on

Criando uma API em NodeJS: Um Guia para Iniciantes

Se você está iniciando no mundo do desenvolvimento com JavaScript e quer criar sua primeira API usando NodeJS, está no lugar certo! Neste artigo, vamos explorar como construir uma API RESTful simples utilizando o framework Express. Vamos trabalhar com todos os verbos HTTP principais e, ao final, você terá uma compreensão sólida de como montar sua própria API. Vamos lá!

Pré-requisitos

Antes de começarmos, certifique-se de ter o NodeJS e o npm (Node Package Manager) instalados em sua máquina. Você pode baixar ambos do site oficial do Node.js.

Configurando o Projeto

  1. Inicie um novo projeto NodeJS

Abra seu terminal e crie um diretório para seu projeto. Em seguida, inicialize um novo projeto NodeJS:


mkdir minha-api

cd minha-api

npm init -y

Enter fullscreen mode Exit fullscreen mode

Isso criará um arquivo package.json com as configurações padrão.

  1. Instale o Express

Para criar nossa API, precisamos do Express, um framework web que simplifica o desenvolvimento em NodeJS.


npm install express

Enter fullscreen mode Exit fullscreen mode

Criando Servidor com Express

Vamos começar criando um servidor básico.

  1. Crie o arquivo principal

No diretório raiz do projeto, crie um arquivo chamado index.js.

  1. Configure o servidor básico

Abra o index.js e adicione o seguinte código:


const express = require('express');

const app = express();

const port = 3000;

app.use(express.json());

app.listen(port, () => {

console.log(`Servidor rodando em http://localhost:${port}`);

});

Enter fullscreen mode Exit fullscreen mode

Este código cria um servidor que escuta na porta 3000 e está pronto para receber requisições.

Trabalhando com Verbos HTTP

Agora que temos um servidor básico em execução, vamos adicionar rotas para cada um dos principais verbos HTTP: GET, POST, PUT e DELETE.

  1. Método GET

Vamos começar com uma rota que retorna uma lista de itens:


const items = [

{ id: 1, name: 'Item 1' },

{ id: 2, name: 'Item 2' },

];

app.get('/items', (req, res) => {

res.json(items);

});

Enter fullscreen mode Exit fullscreen mode

Esta rota responderá com uma lista de itens quando acessarmos http://localhost:3000/items.

  1. Método POST

Para adicionar um novo item à lista, usamos o verbo POST:


app.post('/items', (req, res) => {

const newItem = req.body;

newItem.id = items.length + 1;

items.push(newItem);

res.status(201).json(newItem);

});

Enter fullscreen mode Exit fullscreen mode

Com esta rota, você pode enviar um novo item no corpo da requisição e ele será adicionado à lista.

  1. Método PUT

Para atualizar um item existente, utilizamos o verbo PUT:


app.put('/items/:id', (req, res) => {

const id = parseInt(req.params.id, 10);

const itemIndex = items.findIndex(item => item.id === id);

if (itemIndex !== -1) {

const updatedItem = { id, ...req.body };

items[itemIndex] = updatedItem;

res.json(updatedItem);

} else {

res.status(404).send('Item não encontrado');

}

});

Enter fullscreen mode Exit fullscreen mode

Nesta rota, podemos atualizar um item existente pelo seu ID.

  1. Método DELETE

Para remover um item, usamos o verbo DELETE:


app.delete('/items/:id', (req, res) => {

const id = parseInt(req.params.id, 10);

const itemIndex = items.findIndex(item => item.id === id);

if (itemIndex !== -1) {

items.splice(itemIndex, 1);

res.status(204).send();

} else {

res.status(404).send('Item não encontrado');

}

});

Enter fullscreen mode Exit fullscreen mode

Esta rota permitirá que você exclua um item pelo ID.

Conclusão

E pronto! Você criou uma API básica em NodeJS utilizando Express que responde aos verbos HTTP GET, POST, PUT e DELETE. Este exemplo é um ponto de partida excelente para entender como APIs funcionam e como você pode expandi-las para casos mais complexos.

Para mais informações sobre o Express, você pode consultar a documentação oficial. Além disso, recomendo a leitura do livro "Node.js Design Patterns" de Mario Casciaro e Luciano Mammino para aprofundar seus conhecimentos.

Boa codificação!

Top comments (0)