Como funcionam os métodos GET e POST
como-funcionam-os-metodos-get-e-post
Nosso objetivo é entender os métodos GET e POST.
Esta não é um artigo formal, nem acadêmico, sobre o protocolo HTTP, se você precisa dessas informações para seu TCC ou qualquer outro trabalho escolar, que tal dar uma olha nesta documentação. Neste artigo eu quero passar para você uma forma bem prática de como os verbos GET e POST são regidos pelo protocolo HTTP.
Não dá para falar sobre os verbos POST e GET sem introduzir o protocolo HTTP, ou será que dá ? Acho que não, mas como fazer uma apresentação formal do protocolo não é o objetivo deste artigo (como já foi dito) eu vou deixar aqui uma "breve noção" do que vem a ser o HTTP.
O Hypertext Transfer Protocol, é um protocolo de comunicação utilizado para sistemas de informação de hipermídia, distribuídos e colaborativos. Ele é definido pela especificação" rfc2616
Se você assitiu ao vido acima, percebeu que sempre caímos nas requisições (pedidos) e respostas. Elas são o objeto de estudo deste artigo.
A requisição compreende três elementos:
Uma linha de pedido:
POST /www.devfuria.com.br/script-para-onde-envio-os-dados.php HTTP/1.1
Os campos de cabeçalho do pedido
... eu apaguei as demais linhas
O corpo do pedido
email=joao@dasilva.com
username=João da Silva
A requisição acima foi gerada pelo formulário web ilustrado abaixo
Repare que os campos viraram um par nome=valor no corpo do pedido.
Essa "mágica" eu mostro na próxima matéria.
A resposta também compreende três elementos:
Uma linha de estatuto:
Os campos de rúbrica da resposta
Date: Fri, 31 Jan 2014 14:03:55 GMT
O corpo da resposta
Aqui é documento (normalmente HTML) de resposta
Repare na "linha de estatuto" que temos o código de resposta 200 e sua descrição OK.
Abaixo temos as 4 respostas mais encontradas.
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…)
O método pode ser gerado por um formulário web e também por um link em sua página HTML. Ele possui 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).
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:
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 JavaScript podemos ler os campos, criar a URL e enviar tudo via AJAX, só que saímos do campo de Back End e adentramos o campo do Front End.
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.
Um dos desafios do desenvolvimento de uma aplicação web é justamente esse: sua perda de estado.
Para ajudar a solucionar essa questão existem mecanismos como as session (sessão) e os cookies. Eles são espaços onde podemos anotar alguma informação e utilizá-la enquanto a sessão estiver ativa (válida). Mas isso é assunto para outro artigo.
Este artigo foi mais teórico do que prático, não teremos um exercício em específico, mas que tal você buscar em outras fontes o reforço dos seguintes conceitos: