Leodario.com

Leodario.com – Tudo sobre Tecnologia

Aula 4 – API JavaScript, Node.js e Express – REST vs SOAP vs GraphQL – Tipos de APIs

Imagem destacada da aula de API

Introdução (3 min)

Imagine um restaurante. REST, SOAP e GraphQL são como diferentes maneiras de pedir comida. REST é como um cardápio fixo, SOAP um formulário detalhado e GraphQL um pedido personalizado. Entender essas diferenças é fundamental para construir APIs modernas e eficientes.

Nesta aula, vamos explorar esses três tipos de APIs, focando nas suas características principais e em como usá-los no contexto de Node.js e Express.

Conceito Fundamental (7 min)

REST (Representational State Transfer) é o tipo mais comum de API. Ele usa verbos HTTP (GET, POST, PUT, DELETE) para interagir com recursos. Pense em cada URL como um item no cardápio do restaurante. REST é simples, flexível e amplamente suportado.

    • Vantagens: Facilidade de implementação, ampla adoção, boa performance.
    • Desvantagens: Pode ser ineficiente para requisições complexas, over-fetching e under-fetching.

SOAP (Simple Object Access Protocol) é um protocolo mais antigo e mais formal. Ele utiliza XML para enviar e receber dados. É como preencher um formulário detalhado para o seu pedido. SOAP é robusto e seguro, ideal para sistemas corporativos.

    • Vantagens: Segurança avançada, padronização rígida.
    • Desvantagens: Complexidade de implementação, verbosidade, performance inferior ao REST.

GraphQL é uma linguagem de consulta para APIs. Ele permite que o cliente especifique exatamente quais dados precisa, evitando over-fetching e under-fetching. É como fazer um pedido personalizado no restaurante. GraphQL é eficiente e flexível, ideal para aplicações complexas.

    • Vantagens: Eficiência na transferência de dados, flexibilidade para o cliente.
    • Desvantagens: Curva de aprendizado mais íngreme, complexidade na implementação do servidor.

Implementação Prática (10 min)

Vamos criar um servidor Express simples com uma rota REST:

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

// Rota REST para obter todos os usuários app.get('/usuarios', (req, res) => { const usuarios = [ { id: 1, nome: 'João' }, { id: 2, nome: 'Maria' }, ]; res.json(usuarios); // Retorna os dados em formato JSON });

// Error handling básico app.use((err, req, res, next) => { console.error(err.stack); // Log do erro no console res.status(500).send('Algo deu errado!'); });

app.listen(port, () => { console.log(Servidor rodando em http://localhost:${port}); });

Para executar esse código, salve-o como index.js e rode node index.js no seu terminal. Lembre-se de ter o Node.js e o npm instalados. A compatibilidade com o HostGator Plano M é garantida, pois utiliza apenas recursos básicos do Node.js e do Express.

Exercício Hands-On (5 min)

Crie uma nova rota REST que retorna um usuário específico pelo ID. Utilize o método app.get('/usuarios/:id', ...) e acesse o parâmetro id através de req.params.id. Retorne um erro 404 caso o usuário não seja encontrado.

Solução:

app.get('/usuarios/:id', (req, res) => {
  const id = parseInt(req.params.id);
  const usuario = usuarios.find(u => u.id === id);

if (!usuario) { return res.status(404).send('Usuário não encontrado'); // Retorna 404 se não encontrar }

res.json(usuario); });

Teste acessando http://localhost:3000/usuarios/1 e http://localhost:3000/usuarios/3 no seu navegador. Observe o resultado e o código de status retornado.

Próximos passos: Explore bibliotecas para implementar SOAP e GraphQL em Node.js, como soap e apollo-server-express.

🚀 Pronto para a próxima aula?

Continue sua jornada no desenvolvimento de APIs e domine Node.js & Express!

📚 Ver todas as aulas