Sobes.tech
Junior

O que é REST?

sobes.tech IA

Resposta da IA

REST (Transferência de Estado Representacional) é um estilo arquitetónico para construir sistemas distribuídos, principalmente utilizado no projeto de serviços web. Baseia-se num conjunto de princípios e restrições que definem como os recursos web interagem entre si.

Princípios-chave do REST:

  • Cliente-servidor: Separação clara de responsabilidades entre cliente e servidor.
  • Sem estado (stateless): O servidor não armazena informações sobre o estado do cliente entre pedidos. Cada pedido contém toda a informação necessária para processamento.
  • Cacheável: Os clientes podem armazenar em cache as respostas do servidor para melhorar o desempenho. O servidor indica explicitamente se a resposta pode ser cacheada.
  • Sistema em camadas: O cliente pode interagir com uma camada intermédia (por exemplo, proxy, balanceador de carga) sem o saber.
  • Código sob demanda (opcional): O servidor pode transferir código executável para o cliente (por exemplo, JavaScript), expandindo a funcionalidade do cliente.
  • Interface uniforme: O princípio mais importante, que inclui:
    • Identificação de recursos (URI).
    • Manipulação de recursos através de representações (troca de dados num formato definido, por exemplo, JSON, XML).
    • Mensagens auto-descritivas (as mensagens contêm toda a informação necessária para a sua compreensão).
    • HATEOAS (Hypermedia as the Engine of Application State): O cliente navega entre estados da aplicação usando hiperligações contidas nas respostas do servidor.

API RESTful é uma implementação do estilo REST para serviços web, que utiliza métodos HTTP padrão (GET, POST, PUT, DELETE) para trabalhar com recursos.

// Exemplo de uso de métodos HTTP em API RESTful
// Obter recurso
// GET /api/products/1

// Criar recurso
// POST /api/products
// Corpo: { "name": "Novo Produto", "price": 10.50 }

// Atualizar recurso
// PUT /api/products/1
// Corpo: { "name": "Produto Atualizado", "price": 11.00 }

// Eliminar recurso
// DELETE /api/products/1