Qual é a diferença entre HTTP GET e HTTP POST?
GET vs. POST
Estritamente falando, a diferença entre GET e POST está em como os aplicativos são transferidos. As informações em GET são transmitidas no URL. Se você já viu um URL que inclui pontos de interrogação e símbolos de união, estava procurando uma solicitação GET: example.com/request.php?var1=foo&var2=bar é uma string GET que codifica a variável "var1" como "foo" e a variável "var2" como "bar". As informações do POST estão incluídas no corpo da solicitação e não são visíveis na cadeia de URL (e, portanto, não são visíveis para o usuário).
Diretrizes formais
Formalmente, as diretrizes de HTML dizem que o GET deve ser usado para solicitações "idempotentes" ou solicitações que não alteram nada. Por exemplo, imagine uma página da Web que retorna o clima local: "example.com/weather.php?zipcode=12345". O ato de apresentar essa solicitação repetidas vezes não muda nada. O POST deve ser usado para aplicativos que não são idempotentes. Por exemplo, suponha que você estava fazendo uma compra com seu cartão de crédito. Apresentar essa solicitação várias vezes pode levar a mudanças bastante grandes. Como o reenvio de uma solicitação POST tem consequências (mesmo que sejam pequenas), os navegadores da Web geralmente fazem uma solicitação aparecer para o usuário confirmar que eles realmente desejam reenviar o formulário de consulta.
Vantagens de GET
O GET tem várias vantagens sobre o POST. Como o GET é codificado como parte de um URL, você pode recortar e colar o URL e compartilhá-lo com outras pessoas. Solicitações GET também podem ser marcadas. Se você verificar periodicamente a hora, poderá adicionar "example.com/weather.php?zipcode=12345" à barra "Favoritos" do seu navegador. Assim, ao clicar nesse link, você carregará automaticamente sua página de clima personalizada. Como as solicitações GET são visíveis (e editáveis) pelo usuário, elas também podem ser pirateadas. Por exemplo, se o local do clima não oferecer uma maneira óbvia de alterar a localização da solicitação de tempo, você poderá alterar manualmente "12345" para "99762" para ver o clima em Nome, Alasca, em vez do tempo em Schenectady.
Quando usar o POST
Mesmo em situações que são idempotentes, o POST tem usos claros ocasionais. Alguns deles são baseados em segurança ou legalidade. As variáveis GET são transmitidas "in clear", já que você não deseja enviar informações sobre cartões de crédito, números de previdência social, senhas ou informações confidenciais do usuário por meio de GET. Como os dados do POST ficam mais escuros, é preferível nessas situações. O POST também é usado para a transmissão de grandes quantidades de dados, mesmo que os dados não sejam sensíveis. Tecnicamente, as URLs (e, portanto, as variáveis GET) podem ter um comprimento ilimitado. No entanto, como muitos navegadores limitam a quantidade de espaço que um URL pode ter, o GET geralmente é considerado adequado apenas para solicitações relativamente curtas.