Como funcionam os métodos GET e POST

Introdução prática e descomplicada sobre o protocolo HTTP onde nosso objetivo é entender os métodos GET e POST.

O protocolo HTTP

O funcionamento do PHP depende do Apache e o apache depende do protocolo HTTP.

O protocolo HTTP é a roda que faz girar toda a internet, ele está na camada mais alta do modelo OSI (não confuda OSI com ISO).

O que é camada de rede? Espere aí, estamos fugindo do escopo deste artigo, mas é um assunto básico (para quem está estudando redes de computadores), então fica a imagem só para estigá-lo(a).

Figura do modelo OSI

O HTTP trabalha com requisições (request) e respotas (response).

Você conhece um software que faz requisições HTTP?

Conhece sim! Esse navegador que está utilizando para ver está página é a resposta.

A imagem abaixo ilustra o processo.

Primeiro diagrama modelo OSI

Se você digita um endereço na barra de endereço seu navegador e aperta a tecla Enter o navegador faz uma requisição HTTP para o servidor do endereço digitado e o método dessa requisição é o GET. Se você clicar em um link em um site, o navegador também se encarrega de fazer um requisição HTTP com o método GET, para buscar o conteúdo da página que você clicou. Fonte: http://www.comocriarsites.com/html/como-funciona-os-metodos-get-e-post-diferencas/

A imagem abaixo ilustra o esquema com mais detalhes.

Segundo diagrama modelo OSI

Existem outros métodos além do GET e POST, veja o quadro abaixo.

outros métodos HTTP

Eles servirão quando o assunto for sobre REST, por enquanto ficaremos apenas com GET e POST.

Requisição

A requisição compreende três elementos:

A requisição acima foi gerada pelo formulário web ilustrado abaixo

exemplo de formulário web

Repare que os campos viraram um par nome=valor no corpo do pedido.

Essa "mágica" eu mostro na próxima matéria.

Resposta

A resposta também compreende três elementos:

Repare na "linha de estatuto" que temos o código de resposta 200 e sua descrição OK.

Abaixo temos as 4 respostas, de longe, mais encontradas.

Código Mensagem Descrição
200 OK O pedido foi realizado corretamente
301 MOVED Os dados pedidos foram transferidos para um novo endereço
404 NOT FOUND Clássico! O servidor não encontrou nada no endereço indicado. Partiram sem deixar endereço…:)
500 INTERNAL ERROR O servidor encontrou uma condição inesperada que o impediu de satisfazer o pedido (às vezes acontecem coisas aos servidores…)

    As descrições foram retiradas deste
    <a href="http://pt.kioskea.net/contents/266-o-protocolo-http" title="link-externo" >artigo</a> (O cara foi "comédia")

GET

O método pode ser gerado por um formulário web e também por um link em sua página HTML. Ele de limite de capacidade e a URL só aceita (obviamente) strings, se você precisar passar arquivos deverá utilizar o POST.

O método GET utiliza a própria URI (normalmente chamada de URL) para enviar dados ao servidor, quando enviamos um formulário pelo método GET, o navegador pega as informações do formulário e coloca junto com a URI de onde o formulário vai ser enviado e envia, separando o endereço da URI dos dados do formulário por um “?” (ponto de interrogação). Fonte: http://www.comocriarsites.com/html/como-funciona-os-metodos-get-e-post-diferencas/

Ao final da URL colocamos o sinal ? e utilizamos a combinação nome=valor separados pelo sinal &.

Também podemos utilizar o formulário web com a propriedade metho "setada" como get, exemplo:

<form method="get"> 

POST

O método só pode ser gerado através de um formulário web (ou através de AJAX), não dá para um link gerar o método post. Na verdade até dá, com uso de JS podemos ler os campos, criar a URL e enviar tudo via AJAX, mas essa é história para outra matéria.

O método POST é mais seguro que o GET! Besteira, ele é tão inseguro quanto o GET. Só porque o usuário não vê os dados na URL não quer dizer que eles (os dados) estão protegidos.

Se a questão é segurança, eu posso te dar uma certeza: tem muita ladainha na net. Mas se quiser um lugar para começar, então veja a nossa seção sobre segurança da informação

Todo controle colocado dentro do formulário web com a propriedade name preenchida gera um par nome=valor para ser enviado no servidor.

Na matéria seguinte veremos passo a passo como gerar as requisições, tanto em GET como em POST.

Sem estado (state less)

Eis o ponto central de uma aplicação web: ela é construída sobre um protocolo sem estado.

Por "sem estado", queremos dizer que cada requisição não tem conhecimento de outra requisição e isso muda tudo.

Muda a lógica, muda a organização, muda a arquitetura.

Você precisará entender e se acostumar com essa característica das aplicações web. Alias iremos conquistar isso na prática.

Comentários

comments powered by Disqus