Explique o que é REST
Resposta Completa
REST (Representational State Transfer) é um estilo arquitetural para projetar APIs web. Não é um protocolo nem um padrão formal — é um conjunto de restrições que, quando seguidas, produzem APIs previsíveis, escaláveis e fáceis de consumir.
As restrições principais do REST
-
Cliente-Servidor — a interface do usuário e o armazenamento de dados são separados. Cada lado evolui independentemente.
-
Stateless (sem estado) — cada requisição deve conter todas as informações necessárias para ser processada. O servidor não guarda sessão entre requisições. Estado de autenticação vai no header (ex:
Authorization: Bearer <token>). -
Interface uniforme — recursos são identificados por URIs e manipulados via métodos HTTP padronizados:
Método Ação GETLê um recurso POSTCria um novo recurso PUT/PATCHAtualiza um recurso DELETERemove um recurso -
Recursos como substantivos — a URI identifica o quê, o método HTTP diz o que fazer:
GET /users— lista usuáriosPOST /users— cria um usuárioGET /users/42— busca o usuário 42DELETE /users/42— remove o usuário 42
-
Representações — o servidor retorna uma representação do recurso (geralmente JSON), não o recurso em si.
-
Cacheável — respostas devem indicar se podem ser cacheadas, permitindo que clientes e intermediários (proxies, CDNs) reutilizem respostas.
REST vs REST "de fato"
Na prática, a maioria das APIs chamadas "REST" são na verdade RESTful no sentido informal — usam HTTP + JSON com URIs razoáveis, mas não seguem todas as restrições (ex: HATEOAS). Isso é aceitável na maioria dos contextos.
O que REST não é:
- Não é um protocolo (o protocolo é HTTP)
- Não é só "usar JSON"
- Não é SOAP (que é um protocolo com contrato XML formal)
Resposta Rápida para o Entrevistador
REST é um estilo arquitetural para APIs web que usa HTTP de forma padronizada: recursos identificados por URIs (substantivos), manipulados por métodos HTTP (GET, POST, PUT, DELETE). É stateless — cada requisição carrega tudo que o servidor precisa. O formato de resposta mais comum é JSON.
Flashcard