Created
July 15, 2020 12:04
-
-
Save profalves/dc0458c96c1d602e271d4edd80f5aa3c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# API, REST e RESTFUL | |
## API | |
Cliente (Client) | |
Garçom (pedidos, levar seus pedidos, para a cozinha) (API) | |
Cozinha (Server) | |
Acrônimo de Application Programming Interface (Interface de Programação de Aplicações) é basicamente um conjunto de rotinas e padrões estabelecidos por uma aplicação, para que outras aplicações possam utilizar as funcionalidades desta aplicação. | |
- Responsável por estabelecer comunicação entre diferentes serviços. | |
- Meio de campo entre as tecnologias. | |
- Intermediador para troca de informações. | |
## REST | |
um acrônimo para REpresentational State Transfer (Transferência de Estado Representativo). | |
Será feita a transferência de dados de uma maneira simbólica, figurativa, representativa, de maneira didática. | |
A transferência de dados, geralmente, usando o protocolo HTTP. | |
O REST delimita algumas obrigações nessas transferências de dados. | |
Resources seria então: Uma entidade ou um objeto. | |
### 6 NECESSIDADES (constraints) para ser RESTful | |
- _Uniform Interface_: Manter uma uniformidade, uma constância, um padrão na construção da interface. Nossa API precisa ser coerente para quem vai consumi-lá. Precisa fazer sentido para o cliente e não ser confusa. Logo, coisas como: o uso correto dos verbos HTTP; endpoints coerentes (todos os endpoints no plural, por exemplo); usar somente uma linguagem de comunicação (json) e não várias ao mesmo tempo; sempre enviar respostas aos clientes; são exemplos de aplicação de uma interface uniforme. | |
- _Client-server_: Separação do cliente e do armazenamento de dados (servidor), dessa forma, poderemos ter uma portabilidade do nosso sistema, usando o React para WEB e React Native para o smartphone, por exemplo. | |
- _Stateless_: Cada requisição que o cliente faz para o servidor, deverá conter todas as informações necessárias para o servidor entender e responder (RESPONSE) a requisição (REQUEST). Exemplo: A sessão do usuário deverá ser enviada em todas as requisições, para saber se aquele usuário está autenticado e apto a usar os serviços, e o servidor não pode lembrar que o cliente foi autenticado na requisição anterior. Nos nossos cursos, temos por padrão usar tokens para as comunicações. | |
- _Cacheable_: As respostas para uma requisição, deverão ser explicitas ao dizer se aquela resquição, pode ou não ser cacheada pelo cliente. | |
- _Layered System_: O cliente acessa a um endpoint, sem precisar saber da complexidade, de quais passos estão sendo necessários para o servidor responder a requisição, ou quais outras camadas o servidor estará lidando, para que a requisição seja respondida. | |
- _Code on demand (optional)_: Dá a possibilidade da nossa aplicação pegar códigos, como o javascript, por exemplo, e executar no cliente. | |
## RESTFUL | |
RESTful, é a aplicação dos padrões REST. | |
## BOAS PRÁTICAS | |
- Utilizar verbos HTTP para nossas requisições. | |
- Utilizar plural ou singular na criação dos endpoints? _NÃO IMPORTA!_ use um padrão!! | |
- Não deixar barra no final do endpoint | |
- Nunca deixe o cliente sem resposta! | |
### VERBOS HTTP | |
- GET: Receber dados de um Resource. | |
- POST: Enviar dados ou informações para serem processados por um Resource. | |
- PUT: Atualizar dados de um Resource. | |
- DELETE: Deletar um Resource | |
### STATUS DAS RESPOSTAS | |
- 1xx: Informação | |
- 2xx: Sucesso | |
- 200: OK | |
- 201: CREATED | |
- 204: Não tem conteúdo PUT POST DELETE | |
- 3xx: Redirection | |
- 4xx: Client Error | |
- 400: Bad Request | |
- 404: Not Found! | |
- 5xx: Server Error | |
500: Internal Server Error |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment