<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Distópico &#187; get</title>
	<atom:link href="http://blog.distopico.org/tag/get/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.distopico.org</link>
	<description>Na teoria a prática é outra</description>
	<lastBuildDate>Mon, 22 Feb 2010 21:10:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>O quanto você sabe sobre desenvolvimento Web?</title>
		<link>http://blog.distopico.org/2008/05/16/o-quanto-voce-sabe-sobre-desenvolvimento-web/</link>
		<comments>http://blog.distopico.org/2008/05/16/o-quanto-voce-sabe-sobre-desenvolvimento-web/#comments</comments>
		<pubDate>Fri, 16 May 2008 11:52:46 +0000</pubDate>
		<dc:creator>edgard</dc:creator>
				<category><![CDATA[Conceitos]]></category>
		<category><![CDATA[get]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[post]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://distopico.wordpress.com/?p=20</guid>
		<description><![CDATA[Nesses últimos dias acabei fazendo uma pesquisa informal com desenvolvedores web de vários níveis, desde quem está iniciando, a quem já trabalha a alguns anos com isso. E o resultado foi o que eu infelizmente esperava, nem todos sabem o básico. Estranho? Acho que não. Antes de continuar pense na resposta para a seguinte pergunta [...]]]></description>
			<content:encoded><![CDATA[<p>Nesses últimos dias acabei fazendo uma pesquisa informal com desenvolvedores web de vários níveis, desde quem está iniciando, a quem já trabalha a alguns anos com isso. E o resultado foi o que eu infelizmente esperava, nem todos sabem o básico. Estranho? Acho que não. Antes de continuar pense na resposta para a seguinte pergunta &#8220;Para que serve no protocolo <abbr title="HyperText Transfer Protocol">HTTP</abbr> os métodos GET e o POST e quais suas diferenças?&#8221;.</p>
<p>As respostas foram as mais variadas, algumas muito boas, melhores até do que a explicação que vou dar a seguir, mas a maioria foi focada nas diferenças, essa sim todo mundo sabe. O GET coloca os parâmetros na <abbr title="Uniform Resource Locator">URL</abbr> da requisição e o POST coloca os parâmetros no corpo da requisição. Exemplificando, quando você envia por um formulário por GET a <abbr title="Uniform Resource Locator">URL</abbr> expõe todos os parâmetros e o POST esconde-os. Ótimo isso é uma das diferença, mas não responde para que serve, pois o GET não serve para passar parâmetros e o POST pra escondê-los. Dos que se arriscaram a dizer para o que servia o POST a maioria respondeu assim: é para tratar submissões de formulários. Nada errado com a reposta, mas não é apenas isso.</p>
<p>Segundo a <abbr title="Request For Comments">rfc</abbr> do <abbr title="HyperText Transfer Protocol">HTTP</abbr> o GET serve para recuperar conteúdo, e o POST para enviar dados a serem processados. Mas não é isso que os formulários fazem? Sim, é. Mas o ponto é que muitos desenvolvedores acabam além de processar os dados exibindo conteúdo na requisição POST. Ou seja utilizando o POST para uma coisa que ele não foi feito para ser usado, a mesma coisa é passar os parâmetros a serem processados por GET. Mas, o que tem de ruim nisso?</p>
<p>Bom, usar uma ferramenta errada para o problema certo é algo certamente ruim. Mas desenvolvedores insistem no lema “Se tudo que você tem é um martelo, trate tudo como se fosse prego”, e acabam martelando muitos parafusos, mesmo tendo uma chave de fenda também. Que é claro, esses mesmo desenvolvedores não vêem que tem. Mas voltando a prática, o problema de exibir informações depois de um POST é que o browser guarda a última requisição para caso você queira fazer um refresh da página. Ou seja mesmo que não tenhamos um formulário na página, o usuário pode acabar reenviando os mesmos dados novamente apenas apertando F5 (ou ⌘+R), e isso logicamente é ruim. Usar GET para passar dados é mais sutil, pois a intenção do GET é ser uma requisição que não tenha efeitos colaterais, ou seja não mudem o estado de uma aplicação. Mas, o que eu ganho com isso? Bom, tem a ver com o fato de o <abbr title="HyperText Transfer Protocol">HTTP</abbr> ser um protocolo sem estado. Mas também tem a ver com a capacidade de você paralelizar sua aplicação, ou seja, rodar eficientemente em vários servidores. Mas para explicar isso é preciso saber o porquê de as linguagens puramente funcionais serem trivialmente paralelizáveis (vou explicar isso em um post futuro, mas se tem curiosidade, procure saber sobre isso, é algo que com toda certeza vale a pena aprender).</p>
<p>E como eu critiquei <a href="http://distopico.wordpress.com/2008/05/08/10˚-encontro-locaweb-tendencias-do-mercado-de-internet/">aqui</a> por fazerem confusão com <abbr title="Representational State Transfer">REST</abbr>, que tem tudo a ver com métodos <abbr title="HyperText Transfer Protocol">HTTP</abbr>, os próximos posts vão ser sobre isso, afim de explicar este padrão arquitetural. Que não é tão complicado, é só pensar na razão de <abbr title="Uniform Resource Locator">URL</abbr> significar &#8220;Uniform Resource Locator&#8221;, ou seja &#8220;Localizador uniforme de recursos&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.distopico.org/2008/05/16/o-quanto-voce-sabe-sobre-desenvolvimento-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using memcached
Page Caching using memcached (user agent is rejected)
Database Caching 8/15 queries in 0.003 seconds using memcached

Served from: blog.distopico.org @ 2010-09-09 14:11:06 -->