HTTP - Hypertext Transfer Protocol

O Que é HTTP?

HTTP (Hypertext Transfer Protocol) é o protocolo de comunicação fundamental usado na World Wide Web. Ele é utilizado para transmitir informações entre um servidor web e um cliente web, geralmente um navegador.

Objetivo e Finalidade:

O principal objetivo do HTTP é permitir a transferência de dados (principalmente, documentos HTML) da web.

Ele facilita a comunicação entre diferentes sistemas, permitindo que os usuários acessem conteúdo web como páginas, imagens, vídeos e outros arquivos.

Estrutura de Pedidos (Requisições):

Uma requisição HTTP típica contém:

  1. Linha de Pedido: Inclui o método HTTP, a URL do recurso solicitado e a versão do protocolo HTTP.
    • Exemplo: GET /index.html HTTP/1.1
  2. Cabeçalhos: Fornecem informações adicionais sobre a requisição, como o tipo de navegador (User-Agent), tipos de conteúdo aceitos (Accept) e o host.
    • Exemplo:
      • Host: www.example.com
      • User-Agent: Mozilla/5.0
      • Accept: text/html
  3. Corpo do Pedido: Em métodos como POST ou PUT, o corpo do pedido contém os dados a serem enviados ao servidor.

Estrutura de Respostas:

Uma resposta HTTP inclui:

  1. Linha de Status: Contém a versão do protocolo, um código de status e uma frase de status.
    • Exemplo: HTTP/1.1 200 OK
  2. Cabeçalhos de Resposta: Fornecem informações sobre o servidor e o conteúdo da resposta.
    • Exemplo:
      • Content-Type: text/html
      • Content-Length: 1024
  3. Corpo da Resposta: Contém os dados solicitados, como o HTML de uma página web.

Códigos de Resposta HTTP

Os códigos de resposta HTTP são emitidos por servidores para indicar o status de um pedido feito pelo cliente. Eles são divididos em várias categorias, cada uma representando um tipo específico de resposta:

1xx: Respostas Informativas

  • 100 Continue: O servidor recebeu o cabeçalho da requisição e o cliente pode continuar com o corpo da requisição.
  • 101 Switching Protocols: O servidor está mudando para o protocolo solicitado pelo cliente.

2xx: Sucesso

  • 200 OK: Requisição bem-sucedida e a resposta contém os dados solicitados.
  • 201 Created: Uma nova entidade foi criada com sucesso.
  • 204 No Content: A requisição foi bem-sucedida, mas o servidor não tem nenhum conteúdo para retornar.

3xx: Redirecionamentos

  • 301 Moved Permanently: O recurso solicitado foi movido permanentemente para um novo URI.
  • 302 Found: O recurso foi temporariamente movido para um novo URI.
  • 304 Not Modified: Não há necessidade de retransmitir o recurso solicitado, pois não foi modificado.

4xx: Erros do Cliente

  • 400 Bad Request: O servidor não entendeu a requisição devido a uma sintaxe inválida.
  • 401 Unauthorized: Autenticação é necessária para acessar o recurso.
  • 403 Forbidden: O servidor entende a requisição, mas se recusa a autorizá-la.
  • 404 Not Found: O recurso solicitado não foi encontrado no servidor.

5xx: Erros do Servidor

  • 500 Internal Server Error: O servidor encontrou uma situação que não sabe como lidar.
  • 503 Service Unavailable: O servidor não está pronto para lidar com a requisição, geralmente por estar sobrecarregado ou em manutenção.

Esses códigos ajudam a entender o resultado de uma requisição HTTP, informando se foi bem-sucedida, se houve erro do lado do cliente, redirecionamento ou problema no servidor.

Métodos HTTP:

  1. GET: Solicita a representação de um recurso.
  2. POST: Envia dados para serem processados para um recurso específico.
  3. PUT: Atualiza um recurso existente ou cria um novo.
  4. DELETE: Remove um recurso específico.
  5. HEAD: Similar ao GET, mas apenas solicita os cabeçalhos de resposta.
  6. OPTIONS: Descreve as opções de comunicação para o recurso.
  7. PATCH: Aplica modificações parciais a um recurso.

Exemplo de Uso:

  • GET: Usado para acessar uma página web.
    • GET /index.html HTTP/1.1
  • POST: Usado em formulários para enviar dados ao servidor.
    • POST /submit-form HTTP/1.1

O HTTP é um protocolo sem estado (stateless), o que significa que cada pedido é independente e não mantém informações entre diferentes transações.