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:
- 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
- Exemplo:
- 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.comUser-Agent: Mozilla/5.0Accept: text/html
- Exemplo:
- 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:
- 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
- Exemplo:
- Cabeçalhos de Resposta: Fornecem informações sobre o servidor e o conteúdo da resposta.
- Exemplo:
Content-Type: text/htmlContent-Length: 1024
- Exemplo:
- 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:
- GET: Solicita a representação de um recurso.
- POST: Envia dados para serem processados para um recurso específico.
- PUT: Atualiza um recurso existente ou cria um novo.
- DELETE: Remove um recurso específico.
- HEAD: Similar ao GET, mas apenas solicita os cabeçalhos de resposta.
- OPTIONS: Descreve as opções de comunicação para o recurso.
- 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.