Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HTTP & REST

HTTP & REST

Guilherme Dinardi

August 18, 2021
Tweet

More Decks by Guilherme Dinardi

Other Decks in Programming

Transcript

  1. O que é HTTP? Hyper Text Transfer Protocol É um

    protocolo de comunicação entre computadores, que permite a transferência de textos, ou seja, os códigos que resultam nas páginas acessadas pelo navegador, através de redes, como a World Wide Web (internet). É um protocolo usado para transferir as páginas do computador para a internet. Existem dois responsáveis pelo funcionamento: o cliente e o servidor 2
  2. Como funciona? Cliente A conexão é iniciada pelo cliente, que

    na maior parte dos casos, é o navegador. Ao acessar um site, o navegador envia uma requisição através da internet para o computador onde o site está hospedado. As aplicações que agem em nome do usuário, como os navegadores, são chamados de user-agents. Após enviar uma requisição, o user-agent espera por uma resposta do servidor, e quando isso acontece, a conexão se encerra. 3 Servidor O servidor pode ser um computador ou um grupo de computadores com o mesmo endereço. Os servidores armazenam os documentos que processam as requisições dos clientes.
  3. Quando o cliente quer se comunicar com um servidor, ele

    realiza os seguintes passos: 1. Abre uma conexão TCP: A conexão TCP será usada para enviar uma requisição, ou várias, e receber uma resposta. O cliente pode abrir uma nova conexão, reusar uma conexão existente, ou abrir várias conexões aos servidores. 2. Envia uma mensagem HTTP: mensagens HTTP são legíveis às pessoas. 3. Lê a resposta do servidor 4. Fecha ou reutiliza a conexão para requisições futuras Fluxo HTTP 4 2. 3.
  4. Métodos de Requisições Métodos podem ser safe , idempotent ou

    cacheable. Safe: são os métodos seguros, ou seja, não alteram o recurso da requisição, gerando apenas consultas com os métodos GET ou HEAD Idempotent: são os métodos que podem ser chamados várias vezes sem obter resultados diferentes Cacheable: são os métodos que podem ser armazenados para serem recuperados e usados posteriormente, salvando uma nova requisição ao servidor 5 GET: Faz consulta e retorna apenas dados HEAD: Retorna somente o cabeçalho POST: Solicita ao servidor a criação do corpo da requisição no contexto do servidor PUT: Substitui os dados do destino pelos da requisição DELETE: Remove um recurso OPTIONS: Descreve as opções de conexão com o recurso de destino PATCH: Faz modificações parciais em um recurso
  5. Status de HTTP Os status http são divididos em classes:

    1XX: Informativa: Informam que a requisição foi aceita e o servidor está pronto para dar continuidade ao processo. 2XX: Sucesso: Significa que a solicitação foi entendida e será processada com sucesso. 3XX: Redirecionamento: Quer dizer que a URL solicitada foi alterada, mas o administrador do site redirecionou a conexão para a página atual. 4XX: Erro do cliente: Indica que o servidor não conseguiu processar a requisição por erro do cliente ou porque a página foi excluída. 5XX: Erro do servidor: Indica que houve algum erro por parte do servidor, como permissões nas pastas, e por isso a solicitação não pôde ser atendida. 6
  6. O que é RESTful? Representational State Transfer ou REST É

    um grupo de restrições de design dentro da arquitetura de software que geram sistemas distribuídos eficientes, confiáveis e escaláveis. Um sistema é denominado RESTful quando adere a todas essas restrições. 7
  7. Como funciona? A ideia do REST é criar uma imagem

    de como um web service bem projetado deve se comportar. Necessidades para ser RESTful: Cliente-servidor: Separação do cliente e do servidor, dessa forma, poderemos ter uma portabilidade do nosso sistema. 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). Cacheable: As respostas para uma requisição, deverão ser explícitas ao dizer se aquela requisição, pode ou não ser cacheada pelo cliente. 8 Sistemas em Camadas: O cliente acessa 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. Interface Uniforme: Manter uma uniformidade, uma constância, um padrão na construção da interface. Logo, coisas como: o uso correto dos verbos HTTP; endpoints coerentes, usar somente uma linguagem de comunicação e não várias ao mesmo tempo; sempre enviar respostas aos clientes