Fluxo HTTP no Django

Na primeira aula desse capítulo, foi abordado o funcionamento do protocolo HTTP e qual problema o Django resolve.

O HTTP é um conjunto de regras que permite a comunicação entre um cliente (browser) e um servidor da web. Ele é amplamente utilizado para solicitar e fornecer recursos, como páginas da web, imagens e outros tipos de dados.

A requisição HTTP nada mais é que um arquivo como o formato a seguir:

request

request

Quando o servidor recebe este arquivo, deve responder com um ‘response’. Cujo o formato é bem parecido:

Untitled

Quando o acesso ao HTTP é feito pelo navegador, o navegador consegue entender o tipo de conteúdo e então, interpretar o HTML, mostrando a interface para o cliente.

  1. Pedido (Request):

  2. Processamento do Servidor:

  3. Resposta (Response):

  4. Entrega ao Cliente:

  5. Processamento do Cliente:

  6. Encerramento da Conexão (Opcional):

    Verbos de uma requisição

    1. GET: O método GET é usado para solicitar dados de um servidor web. Ele envia uma requisição para o servidor solicitando um recurso específico, que é recuperado e retornado como resposta. O GET é usado para recuperar informações, mas não deve ser usado para alterar o estado do servidor.
    2. POST: O método POST é usado para enviar dados para o servidor. Ele é comumente usado para submeter formulários da web e enviar informações que serão processadas pelo servidor. Os dados são incluídos no corpo da requisição.
    3. PUT: O método PUT é usado para atualizar ou substituir um recurso existente no servidor com os dados fornecidos na requisição. Ele é usado para fazer alterações específicas em um recurso identificado por sua URL.
    4. DELETE: O método DELETE é usado para remover um recurso específico do servidor, identificado pela URL da requisição. Ele efetua a exclusão do recurso no servidor.
    5. PATCH: O método PATCH é usado para fazer modificações parciais em um recurso existente no servidor. Em vez de substituir o recurso inteiro, apenas as alterações especificadas no corpo da requisição são aplicadas.
    6. HEAD: O método HEAD é semelhante ao GET, mas solicita apenas os cabeçalhos (headers) da resposta, sem o corpo do recurso. É útil para obter informações sobre um recurso, como metadados, sem transferir todo o conteúdo.
    7. OPTIONS: O método OPTIONS é usado para obter informações sobre as opções de comunicação disponíveis para um recurso ou servidor. Ele retorna os métodos HTTP permitidos para um determinado recurso.
    8. CONNECT: O método CONNECT é usado para criar uma conexão de rede direta com um recurso, geralmente através de um proxy. É menos comum e é frequentemente utilizado para estabelecer túneis SSL/TLS.
    9. TRACE: O método TRACE é usado principalmente para fins de diagnóstico. Ele solicita ao servidor que retorne uma mensagem de depuração contendo informações sobre a rota que a requisição fez até o servidor. No entanto, seu uso é limitado devido a preocupações com segurança.
    10. OPTIONS: O método OPTIONS é usado para solicitar informações sobre os métodos HTTP permitidos para um determinado recurso. Isso ajuda os clientes a entenderem quais operações podem ser realizadas no recurso.

    Lista com códigos de status do response

    1. 1xx (Informações):
      • 100 - Continue
      • 101 - Mudando Protocolos (Switching Protocols)
    2. 2xx (Sucesso):
      • 200 - OK
      • 201 - Criado (Created)
      • 202 - Aceito (Accepted)
      • 204 - Sem Conteúdo (No Content)
      • 206 - Conteúdo Parcial (Partial Content)
    3. 3xx (Redirecionamento):
      • 300 - Múltipla Escolha (Multiple Choices)
      • 301 - Movido Permanentemente (Moved Permanently)
      • 302 - Encontrado (Found)
      • 304 - Não Modificado (Not Modified)
      • 307 - Redirecionamento Temporário (Temporary Redirect)
      • 308 - Redirecionamento Permanente (Permanent Redirect)
    4. 4xx (Erro do Cliente):
      • 400 - Requisição Inválida (Bad Request)
      • 401 - Não Autorizado (Unauthorized)
      • 403 - Proibido (Forbidden)
      • 404 - Não Encontrado (Not Found)
      • 405 - Método Não Permitido (Method Not Allowed)
      • 408 - Tempo Limite de Requisição Excedido (Request Timeout)
      • 429 - Taxa Limite de Solicitação Excedida (Too Many Requests)
    5. 5xx (Erro do Servidor):
      • 500 - Erro Interno do Servidor (Internal Server Error)
      • 501 - Não Implementado (Not Implemented)
      • 502 - Gateway Inválido (Bad Gateway)
      • 503 - Serviço Indisponível (Service Unavailable)
      • 504 - Tempo Limite de Gateway Excedido (Gateway Timeout)
      • 505 - Versão HTTP não suportada (HTTP Version Not Supported)

Problema que o django resolve: