Como fazer versionamento de APIs no Express.js?

O versionamento de APIs no Express.js permite criar múltiplas versões de endpoints, garantindo compatibilidade com aplicações antigas.

Como fazer versionamento de APIs no Express.js?

O versionamento de APIs é essencial para permitir a evolução de um sistema sem quebrar compatibilidade com versões anteriores. No Express.js, podemos fazer isso de diferentes formas.

1. Versionamento via URL

A abordagem mais comum é incluir a versão na URL:

const express = require('express');
const app = express();

// Versão 1 da API
app.get('/api/v1/usuarios', (req, res) => {
    res.json({ versao: '1.0', mensagem: 'Lista de usuários - v1' });
});

// Versão 2 da API
app.get('/api/v2/usuarios', (req, res) => {
    res.json({ versao: '2.0', mensagem: 'Lista de usuários com novos campos - v2' });
});

app.listen(3000, () => console.log('Servidor rodando na porta 3000'));

Agora, podemos acessar diferentes versões via:

  • GET /api/v1/usuarios
  • GET /api/v2/usuarios

2. Versionamento via Header

Outra abordagem é enviar a versão no cabeçalho da requisição:

app.get('/api/usuarios', (req, res) => {
    const versao = req.headers['accept-version'];
    if (versao === '2.0') {
        return res.json({ versao: '2.0', mensagem: 'Lista de usuários v2' });
    }
    res.json({ versao: '1.0', mensagem: 'Lista de usuários v1' });
});

Agora, o cliente pode especificar a versão no header:

Accept-Version: 2.0

3. Versionamento via Query Params

Também podemos definir a versão via parâmetro de consulta:

app.get('/api/usuarios', (req, res) => {
    const versao = req.query.versao || '1.0';
    res.json({ versao, mensagem: `Lista de usuários v${versao}` });
});

Agora, podemos chamar:

  • GET /api/usuarios?versao=1.0
  • GET /api/usuarios?versao=2.0

Conclusão

O versionamento de APIs no Express.js permite a evolução da aplicação sem impactar clientes que ainda usam versões antigas. A escolha da melhor abordagem depende das necessidades do projeto.

Grandes empresas como Google, Facebook e Twitter utilizam versionamento de APIs para garantir que mudanças no backend não afetem usuários que ainda dependem de versões antigas.

O versionamento bem estruturado permite que novas funcionalidades sejam adicionadas sem descontinuar rapidamente os endpoints antigos, garantindo uma transição suave para os usuários.

Algumas aplicações:

  • Garantia de compatibilidade com versões antigas
  • Evolução gradual de uma API
  • Facilidade na implementação de novos recursos
  • Redução do impacto em clientes já existentes
  • Organização de mudanças na API

Dicas para quem está começando

  • Escolha um método de versionamento adequado ao seu projeto.
  • Utilize versionamento via URL para maior clareza na documentação.
  • Considere versionamento por Header se quiser flexibilidade.
  • Documente todas as versões da API corretamente.
  • Evite mudanças abruptas em APIs que ainda estão em uso.

Contribuições de Lucas Fernandes

Compartilhe este tutorial: Como fazer versionamento de APIs no Express.js?

Compartilhe este tutorial

Continue aprendendo:

Como configurar variáveis de ambiente em uma API Node.js?

As variáveis de ambiente no Node.js permitem armazenar credenciais e configurações de forma segura e flexível.

Tutorial anterior

Como usar WebSockets com Node.js e Express?

Os WebSockets permitem comunicação bidirecional em tempo real entre cliente e servidor em aplicações Node.js.

Próximo tutorial