Monthly Archives: October 2011

O porquê não utilizar GET para alterar estado no servidor

Olá pessoal,

É muito comum (ainda) desenvolvedores Web utilizarem os verbos Http Get e Post de maneira meio que “indiscriminada” para acessarem e/ou buscarem recursos no servidor Web, e digo isso independentemente da tecnologia de servidor que esta sendo utilizada (PHP, ASP.NET, JSF, Rails, Django e etc).

A ideia desse post é simplesmente alertar os desenvolvedores de alguns “perigos” da utilização errada dos verbos para fazer “ações” no servidor.

Em geral devemos pensar nos dois verbos literalmente como nós os lemos, ou seja, GET (SOMENTE para pegar recursos, ok?) e POST (Para postar algo, levar algo ao servidor e provavelmente mudar o estado de algo).

Existem vários motivos de não utilizarmos GET para fazer alterações de estado no servidor, alguns:

  • As requisições podem ser cacheadas
  • Podem ficar no histórico do navegador
  • Podem ser favoritadas
  • São repetíveis naturalmente (Vários F5 tranquilamente sem alerta do browser)

Portanto muito cuidado quando for alterar estado no servidor (adicionar/atualizar/deletar) via GET, pode ser um tanto quanto “perigoso” em alguns casos.

OK então vou sempre utilizar POST para fazer alteração de estado!

Perfeito, mas nesse caso se não fizermos “nada” na resposta dessa requisição teremos um problema chato.

Quem nunca depois de um POST de formulário tentou recarregar a página e PAM! Sim! Alerta do browser dizendo que vai reenviar tudo para o server (outro POST pra ser mais exato, podendo repetir por exemplo a inserção de algo no banco), é eu sei, você assim como eu já passou por isso.

Como resolver?

Até que é fácil, nesse caso devemos utilizar o padrão Post/Redirect/Get (sim é considerado um padrão), dessa forma evitamos esse comportamento chato que sempre acontece, no ASP.NET MVC é bem tranquilo de implementar inclusive.

Bom fica a dica, espero que vocês parem de utilizar GET pra fazer alteração de estado no server =)

Críticas, dúvidas ou sugestões vamos conversar nos comentários.

TechEd 2011 – Demos e Slides

Olá Pessoal,

Na última sexta-feira (30/09/2011) tive a oportunidade juntamente com o Alexandre Tarifa no TechEd 2011 de ministrar uma palestra que queríamos fazer já há algum tempo. O título da sessão foi: Técnicas e recursos para desenvolvimento Web em cenários de grande escala.

A ideia principal da apresentação era mostrar pontos/dicas/soluções que normalmente não são considerados ou lembrados em um cenário onde o volume de acesso e requisições são enormes (temas como: custo, latência, performance, escalabilidade e etc foram discutidos).

Abaixo segue o PPT e o link para o download das DEMOS que fizemos.

PS: Para informações mais detalhadas sobre a demo de Long Polling verifiquem o Post no blog do Rodolfo Fadino

Agradeço a todos que participaram da apresentação, realmente o feedback foi muito bom, espero que tenham gostado.