Apex T.I.C

Endpoint: RESTful

O que é RESTful?

RESTful é um estilo arquitetural para desenvolvimento de APIs baseado no REST (Representational State Transfer), proposto por Roy Fielding em sua tese de doutorado em 2000. APIs RESTful utilizam os protocolos HTTP e seus métodos para manipulação de recursos, promovendo sistemas escaláveis, flexíveis e de fácil integração.

É amplamente utilizado para criar serviços web modernos, conectando aplicações móveis, web e IoT.

Princípios Fundamentais do REST

Recursos e Endpoints

REST organiza dados em recursos, que são representações de entidades (ex: usuários, produtos, pedidos). Cada recurso é identificado por uma URI única.

Exemplo:

Métodos HTTP Usados em APIs RESTful

Status HTTP Comuns

APIs RESTful usam códigos HTTP para indicar o resultado da requisição:

Exemplo Prático: API RESTful em Node.js com Express

Um endpoint simples para manipular usuários:

const express = require('express');
const app = express();
app.use(express.json());

let usuarios = [
  { id: 1, nome: 'Alice', email: 'alice@exemplo.com' },
  { id: 2, nome: 'Bob', email: 'bob@exemplo.com' }
];

// Listar todos os usuários
app.get('/usuarios', (req, res) => {
  res.json(usuarios);
});

// Obter usuário por id
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).json({ erro: 'Usuário não encontrado' });
  res.json(usuario);
});

// Criar usuário
app.post('/usuarios', (req, res) => {
  const { nome, email } = req.body;
  const id = usuarios.length ? usuarios[usuarios.length - 1].id + 1 : 1;
  const novoUsuario = { id, nome, email };
  usuarios.push(novoUsuario);
  res.status(201).json(novoUsuario);
});

// Atualizar usuário
app.put('/usuarios/:id', (req, res) => {
  const id = parseInt(req.params.id);
  const index = usuarios.findIndex(u => u.id === id);
  if (index === -1) return res.status(404).json({ erro: 'Usuário não encontrado' });
  const { nome, email } = req.body;
  usuarios[index] = { id, nome, email };
  res.json(usuarios[index]);
});

// Deletar usuário
app.delete('/usuarios/:id', (req, res) => {
  const id = parseInt(req.params.id);
  usuarios = usuarios.filter(u => u.id !== id);
  res.status(204).send();
});

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

Boas Práticas para APIs RESTful

RESTful vs Outros Estilos de API

Comparado a outras arquiteturas, REST tem: