API (Application Programming Interface) é utilizada para sistemas se comunicarem através de um fluxo de requisições e respostas. Os dados enviados geralmente são em JSON ou XML, são os tipos mais comuns, enquanto REST é um padrão/conceito de arquitetura ligado a APIs e ao protocolo HTTP, ele possui 5 métodos HTTP que permitem ao usuário realizar a manipulação básica dos dados de uma aplicação, são eles:
- GET: Responsável pela consulta dos dados.
- POST: Envia dados para serem adicionados em um banco de dados.
- PUT: Responsável por editar as informações.
- PATCH: Também responsável por editar as informações, mas ao contrário do PUT, não é necessário enviar todos os campos pelo payload, apenas o campo que será alterado.
- DELETE: Responsável por remover uma informação.
Para lidar com as ações dos métodos, há as respostas HTTP, que irão indicar se houve sucesso ou falha na requisição. Algumas respostas HTTP seriam:
- 200: A requisição foi bem sucedida.
- 201: Um novo recurso foi criado com sucesso.
- 204: A solicitação foi bem sucedida, mas não há um conteúdo de retorno.
- 400: Ocorreu um erro do lado do cliente.
- 401: Não foi fornecida uma credencial de autenticação ou ela é inválida.
- 403: O servidor entende a requisição, mas por regras de segurança não dá acesso.
- 404: Endpoint ou recurso solicitado não existe.
REST é composto por 6 princípios, seguindo os seis (ou cinco, pois um é opcional) a API se torna RESTful. Os princípios são:
-
Interface Uniforme: A comunicação entre cliente e servidor deve ser padronizada seguindo quatro subprincípios:
- Os recursos devem ser identificados por URIs, por exemplo:
api/alunos/1
- Precisa haver uma manipulação dos recursos através de representações em formato JSON ou XML.
- Cada requisição deve conter metadados suficientes (método, headers, payload...etc) para a requisição ser autoexplicativa.
- A resposta pode incluir hiperlinks para outras ações possíveis.
-
Arquitetura Cliente-Servidor: As aplicações do cliente e do servidor devem ser completamente independentes uma da outra. A comunicação entre as aplicações devem ser através de requisições HTTP e respostas HTTP.