Sobre o REST
Antes de tudo precisamos ententer que o REST (Representational state transfer) não é uma ferramenta, biblioteca nem mesmo um protocolo de comunicação.
Na verdade ele é um estilo arquitetural utilizado para comunicação entre sistemas. Com outras palavras, podemos dizer que é um conjunto de princípios e definições que definem uma forma padronizada para realizar essa comunicação.
Conceitos importantes
-
Ele é fortemente ancorado pelo protocolo HTTP, fazendo uso padronizado de URLs, verbos, status, cabeçalhos e tudo mais que o HTTP nos fornece.
-
Embora seja mais comum a utilização do formato JSON, ele não é uma restrição do REST, podendo ser utilizado XML, HTML, imagem, texto, etc.
-
Se trata de uma comunicação Cliente-Servidor. Isso quer dizer que de um lado o Servidor se comporta como provedor do serviço, continuamente disponibilizando o serviço a ser acessado. Já no outro lado, podemos ter 0, 1 ou vários Clientes conectando por demanda sempre que precisarem acessar algum dos recursos disponibilizados pelo Servidor.
O HTTP
Métodos (ou Verbos) HTTP:
Cada método possui uma finalidade específica que deve ser respeitada para deixar claro aos clientes qual o efeito esperado. Os métodos mais utilizados são:
-
GET: usado para busca de informações. Não deve alterar dados no servidor.
-
POST: usado para criação de recursos no servidor.
-
DELETE: usado para remoção de recursos existentes no servidor.
-
PUT: usado para substituição de recursos previamente criados no servidor.
-
PATCH: usado para atualização parcial de recursos previamente criados no servidor.
Status de retorno:
Da mesma forma que os métodos. Os status code existentes no HTTP são utilizados. Os status mais utilizados são:
Status de sucesso:
Ou seja, a operação foi realizada:
- 200: acompanhada de retorno de informações.
- 204: sem informações de retorno.
- 201: com a criação de informações.
- 202: de forma assíncrona, ou seja, foi recebida para processamento.
Status de erro de cliente:
Ou seja, a operação não foi realizada, e a responsabilidade provavelmente é do cliente:
- 400: e o motivo provavelmente está no retorno da requisição.
- 400: pois a informação solicitada não existe.
- 422: pois houve falha em uma validação de negócio.
- 401: por falta de autenticação.
- 403: por falta de permissão.
Status de erro de servidor:
Ou seja, a operação não foi realizada, e a responsabilidade provavelmente é do servidor:
- 500: e o motivo provavelmente está no retorno da requisição.
- 503: pois o serviço está indisponível.
- 502: pois um serviço necessário está retornando algo inesperado.
- 504: pois um serviço necessário está demorando para responder.
Mais informações:
- https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Status
- https://www.alura.com.br/artigos/rest-conceito-e-fundamentos
Gosta de vídeo?
REST // Dicionário do Programador - Código Fonte TV:
O QUE É UMA API RESTful NA PRÁTICA? MATURIDADE DE RICHARDSON - Michelli Brito: