<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>restful-web-services &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://wordpress.com/tag/restful-web-services/</link>
	<description>Feed of posts on WordPress.com tagged "restful-web-services"</description>
	<pubDate>Mon, 13 Oct 2008 19:07:21 +0000</pubDate>

	<generator>http://wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Dikes in Holland]]></title>
<link>http://travellingworm.wordpress.com/?p=142</link>
<pubDate>Sun, 21 Sep 2008 08:39:58 +0000</pubDate>
<dc:creator>wordsworm</dc:creator>
<guid>http://travellingworm.pt-br.wordpress.com/2008/09/21/dikes-in-holland/</guid>
<description><![CDATA[This is the blog of a 25-year-old bookmark. I proudly boast my own Hallmark serial number, 95 HBM 80]]></description>
<content:encoded><![CDATA[<p>This is the blog of a 25-year-old bookmark. I proudly boast my own Hallmark serial number, 95 HBM 80-1.</p>
<p>Twenty-five years, and I don't look a day older than one! Alas, I can't say the same for my Travelling Companion. I spend most of my time inside a book (well, duh) while the TC sees the world. Read <strong><a title="About me" href="../about-me/" target="_blank">all about me</a></strong> and follow my blog posts to share my experiences as bookmark and travelling worm.</p>
<p>From time to time, I'll say something meaningful. Like a t-shirt.</p>
<h3>Today’s travel notes</h3>
<p>The Travelling Companion has been rather sedentary recently, so I've been crawling through her photo albums again. I came across some pictures of Holland and some scraps of a letter that she wrote about her encounters with dikes.</p>
<p>This letter is twenty years old, written in April 1988. I thought you would enjoy a bit of ancient history :)</p>
<blockquote><p>We drove along a very impressive dike, which separates the Markermeer from the IJsselmeer. The dike is 29 km long. It is quite lovely to see the open water on each side of the road, with yachts and water-birds dotted all over. A large area east of the Markermeer is reclaimed land, called a polder. There was a plan to reclaim the entire Markermeer, so the dike was built to allow the land to be drained. But evidently they have decided not to do that just yet. One reason why they need more land is that the airport Schiphol is too busy. So they planned to build another one where the water is at present.</p>
<p>North-west of Amsterdam is another polder, eight metres below sea level. There is a canal connecting Amsterdam to the North Sea, and the water in the canal is at sea level. So the canal is well above the level of the roads! It is a very odd experience to see a ship sailing by above you.</p></blockquote>
<h3>A tall tale</h3>
<p>Many people have heard the uplifting story of brave little Hans, a Dutch boy who saved his country by sticking his thumb in hole in a dike, to plug an incipient leak. It's a ridiculous story, really, when you see the size of the dikes.</p>
<p>When the TC was in the Netherlands, she mentioned the tale to a Dutch friend, fully expecting him to acknowledge it as a piece of native folklore. He looked faintly amused and said that he had heard the story but thought it was probably English or American, because no Nederlander would come up with something so silly.</p>
<h3>Traveller's tip</h3>
<p>Don't believe everything they tell you.</p>
<h3>The book I’m in</h3>
<p><em>RESTful Web Services</em>, by Leonard Richardson &#38; Sam Ruby.</p>
<p>Technically tranquil.</p>
<h3>The photos</h3>
<p>Climbing up a dike, somewhere in the Netherlands:</p>
[caption id="attachment_144" align="alignnone" width="450" caption="Dikes in Holland"]<img class="size-full wp-image-144" title="Dikes in Holland" src="http://travellingworm.wordpress.com/files/2008/09/dike2-450px.jpg" alt="Dikes in Holland" width="450" height="305" />[/caption]
<p>Due to a lamentable lack of labelling (notice the skilful alliteration) I can't tell you exactly where the TC was when she snapped these shots, except that she was in Holland and on a dike.</p>
<p>To be precise, I can't even be certain that she was in Holland itself. This may be one of the other provinces of the Netherlands, such as Zeeland.</p>
<p>The view from the top of the dike:</p>
[caption id="attachment_145" align="alignnone" width="450" caption="Dikes in Holland"]<img class="size-full wp-image-145" title="Dikes in Holland" src="http://travellingworm.wordpress.com/files/2008/09/dike1-450px.jpg" alt="Dikes in Holland" width="450" height="297" />[/caption]
<p>If anyone recognises the dike, or the storm surge barriers in the distance, let me know.</p>
<p><span style="color:#808000;"><strong><em>That’s all for today, dudes.</em></strong></span></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Apresentação sobre REST no RioJUG]]></title>
<link>http://blpsilva.wordpress.com/?p=181</link>
<pubDate>Mon, 19 May 2008 23:54:51 +0000</pubDate>
<dc:creator>blpsilva</dc:creator>
<guid>http://blpsilva.pt-br.wordpress.com/2008/05/19/apresentacao-sobre-rest-no-riojug/</guid>
<description><![CDATA[Atenção, este blog foi migrado para: http://brunopereira.org
Caros amigos, na terça-feira dia 27/]]></description>
<content:encoded><![CDATA[<p><strong>Atenção, este blog foi migrado para: <a href="http://brunopereira.org" target="_self">http://brunopereira.org</a></strong></p>
<p>Caros amigos, na terça-feira dia 27/05 farei uma apresentação sobre web services REST no <a href="http://www.riojug.org" target="_blank">RioJUG</a>.</p>
<p>Esta apresentação será semelhante à que <a href="http://blpsilva.wordpress.com/2008/04/24/apresentacao-sobre-web-services-rest/" target="_self">fiz recentemente na Globo.com</a>, mas acho que ficará um pouco melhor. Maiores informações sobre a apresentação podem ser vistas <a href="http://www.riojug.org/conteudo.jsp?id=707" target="_blank">na página do grupo</a>. Após a apresentação atualizarei este post colocando os slides.</p>
<p>Quem quiser/puder comparecer será muito bem-vindo ;)</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Precisamos de um descritor de serviços REST?]]></title>
<link>http://blpsilva.wordpress.com/?p=180</link>
<pubDate>Thu, 15 May 2008 01:33:40 +0000</pubDate>
<dc:creator>blpsilva</dc:creator>
<guid>http://blpsilva.pt-br.wordpress.com/2008/05/14/precisamos-de-um-descritor-de-servicos-rest/</guid>
<description><![CDATA[Atenção, este blog foi migrado para: http://brunopereira.org
Me perguntaram sobre isso na minha ap]]></description>
<content:encoded><![CDATA[<p><strong>Atenção, este blog foi migrado para: <a href="http://brunopereira.org" target="_self">http://brunopereira.org</a></strong></p>
<p>Me perguntaram sobre isso na <a href="http://blpsilva.wordpress.com/2008/04/24/apresentacao-sobre-web-services-rest/" target="_self">minha apresentação de REST</a> na <a href="http://www.globo.com" target="_blank">Globo.com</a> e isso foi assunto de uma discussão interessante hoje no <a href="http://www.cejug.org" target="_blank">CEJUG</a>. Como é um assunto que pode interessar a bastante gente e eu me interesso muito por web services, resolvi falar mais sobre isso aqui no blog.</p>
<p>Os web services WS-* possuem o WSDL (Web Services Description Language), um artefato amplamente aceito que descreve de forma padrão os serviços da aplicação. Ao especificar no WSDL quais são os schemas XML dos documentos que serão trocados e a cardinalidade precisa de cada elemento, conseguimos garantir que qualquer cliente que entenda o padrão estabelecido será capaz de interpretar os documentos e comunicar-se corretamente com os serviços. Além disto, a maturidade deste padrão traz a vantagem de que já existem geradores de clientes em várias linguagens a partir de um documento WSDL.</p>
<p>Entretanto, WSDL (bem como muita coisa em WS-*) é complexo. Um ser humano que tenha que analisar um WSDL grande perderá um bom tempo para entender o que está descrito no documento. Já REST não tem uma forma padrão de especificar os contratos dos serviços.</p>
<p>Embora a versão 2.0 da especificação WSDL permita descrever web services REST, os principais projetos open source da área como o Apache Abdera, Google Data API, Jersey e o Mule não utilizam esta forma de publicação. Não tenho conhecimento de nenhum projeto publicamente divulgado que faça uso do WSDL 2.0 para descrever serviços REST, e a adoção desta capacidade é baixíssima (se é que existe).</p>
<p>O projeto Jersey oferece opcionalmente o WADL, que é uma forma de descrever serviços REST. Confesso que ainda não olhei o WADL para ver se seria interessante usá-lo. Pelo que sei, entretanto, a adoção dele também é muito baixa.</p>
<p>Existe também o documento de serviços do AtomPub, que é bem interessante. Ele é um documento simples que lista quais são as coleções disponíveis e a localização das mesmas. O documento informa também quais são os MIME types aceitos em cada coleção.</p>
<p>Eu considero interessante que a aplicação ofereça uma interface simples de consulta dos serviços disponíveis. Não é obrigatório, mas quando a aplicação tem uma certa quantidade de clientes é bem legal ter isso para facilitar.</p>
<p>Em dois projetos que eu trabalhei, eu implementei um Servlet simples que listava todas as URIs disponíveis na aplicação, quais métodos HTTP são aceitos em cada uma das URIs e além disso um exemplo de XML manipulado em cada uma das URIs. Isso foi algo que eu achei bom o suficiente, e não tão custoso. Normalmente a documentação de verdade dos serviços fica em algum lugar como uma Wiki, ou uma página qualquer com a descrição detalhada de como interagir com os serviços.</p>
<p>A questão principal é que quando você segue as boas práticas de desenvolvimento REST, os seus serviços ficam muito mais claros para quem precisa se integrar. Por exemplo, eu trabalhei em um projeto crítico de integração com o Google esse ano. Tive que usar várias funcionalidades da Google Data API. A API deles é REST, e encapsula os dados com o formato Atom. Eles não oferecem nenhuma interface semelhante ao WSDL, eles simplesmente têm uma <a href="http://code.google.com/apis/apps/overview.html" target="_blank">página com a documentação dos serviços</a>.</p>
<p>Como eles seguiram as boas práticas de implementação REST, eu rapidamente aprendi a utilizar a API deles. Os protocolos de comunicação REST são bem semelhantes, e mais simples de entender do que qualquer coisa com WS-*. Pouco mais de 1 hora depois de olhar a documentação deles, eu já estava conseguindo me integrar com eles, com os primeiros exemplos.</p>
<p>O <a href="http://gc.blog.br" target="_blank">Guilherme</a> fez uma observação interessante durante a discussão disso na minha apresentação no Tech Talk. Quando você segue as boas práticas e implementa um protocolo conciso e claro, de certa forma podemos dizer que a implementação se "auto-documenta". É algo que podemos traçar um paralelo ao que acontece ao utilizarmos Domain Driven Design. Aproximando a linguagem do código do domínio de negócio, facilitamos a compreensão da aplicação por pessoas que nunca a tinham visto antes. Uma boa arquitetura de web services declarativos (REST) fica muito mais clara do que uma arquitetura de web services imperativos (WS-*). Isto acontece porque com REST o que fica em destaque são os <strong>Recursos</strong> (que representam conceitos claros do domínio), em vez de <strong>Operações</strong>.</p>
<p>É claro que as pessoas ainda terão que ler um pouco da documentação, mas como os conceitos em sua maioria já estarão "no sangue", as dificuldades iniciais são menores do que com WS-*.</p>
<p>O <a href="http://weblogs.java.net/blog/felipegaucho/" target="_blank">Felipe Gaúcho</a> comentou no CEJUG sobre a capacidade de gerar clientes automatizados com WSDL. Embora isso seja verdade, no meu ponto de vista isso é meio que um mito. Não conheço ninguém que faça integrações automatizadas sem depender de seres humanos. A motivação disso é clara. Integrações envolvem regras de negócio, e ninguém que eu conheço faz negócios automáticos, sem definir as regras :)</p>
<p>Existia o mito de que as aplicações "descobririam" serviços automaticamente com UDDI e se virariam para fazer as integrações, gerando os clientes automaticamente. Embora isso seja tecnicamente possível, na prática isso pra mim é uma viagem que serviria mais para desenvolvimento de inteligência artificial do que para web services propriamente :)</p>
<p>Embora esta precisão do WSDL seja um ponto positivo, eu tenho a convicção de que a clareza que temos ao usar REST supera e muito as vantagens de termos geradores de clientes automatizados. Quanto a WS-* x REST de uma maneira mais geral, tem uma frase que eu gosto de utilizar. <strong>WS-* é apenas overhead a não ser que você tenha informações relevantes nos seus cabeçalhos SOAP</strong>. Se você nunca se preocupou MUITO (veja bem, MUITO) com o que está indo nos seu cabeçalhos SOAP, <strong>provavelmente</strong> um protocolo REST seria mais interessante.</p>
<p>Tem uma opinião a respeito disso? Estou ansioso para conhecê-la! :)</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Java Magazine 56]]></title>
<link>http://blpsilva.wordpress.com/?p=156</link>
<pubDate>Tue, 08 Apr 2008 00:18:22 +0000</pubDate>
<dc:creator>blpsilva</dc:creator>
<guid>http://blpsilva.pt-br.wordpress.com/2008/04/07/java-magazine-56/</guid>
<description><![CDATA[Atenção, este blog foi migrado para: http://brunopereira.org
 Nos próximos dias chega às bancas ]]></description>
<content:encoded><![CDATA[<p><strong>Atenção, este blog foi migrado para: <a href="http://brunopereira.org" target="_self">http://brunopereira.org</a></strong></p>
<p><a href="http://www.devmedia.com.br/resumo/default.asp?ed=56&#38;site=6" target="_blank"><img class="alignnone size-full wp-image-157" src="http://blpsilva.wordpress.com/files/2008/04/capajava56_g.jpg" alt="Java Magazine 56" width="199" height="271" /></a> Nos próximos dias chega às bancas a <a href="http://www.devmedia.com.br/resumo/default.asp?ed=56&#38;site=6" target="_blank">edição 56 da Java Magazine</a>. Nesta edição saem 2 artigos meus sobre Web Services REST. Como vocês podem ver pela imagem, desta vez os editores me deram a honra de ser a capa da edição :)</p>
<p>Outra honra que tive no artigo maior foi a de contar com a excelente colaboração do <a href="http://neobject.wordpress.com" target="_blank">Alexandre Bairos</a>. Durante nossos trabalhos em cima deste artigo pudemos discutir com todos os detalhes as várias nuances dos serviços REST, com os quais já estamos trabalhando há alguns meses e estudamos já há um bom tempo.</p>
<p>O artigo maior é uma continuação dos artigos das edições <a href="http://www.devmedia.com.br/resumo/default.asp?ed=54&#38;site=6" target="_blank">54</a> e <a href="http://www.devmedia.com.br/resumo/default.asp?ed=55&#38;site=6" target="_blank">55</a>. A proposta dele é pegar o exemplo dos serviços de leilão da edição 55 e implementar uma solução utilizando serviços REST.</p>
<p>A abordagem deste artigo foi implementar os serviços REST de forma que ficassem nítidos os principais aspectos do desenvolvimento desta linha de serviços. Tomamos a decisão de não incluir componentes sofisticados que pudessem tirar o foco do cerne do problema. Com isto, não incluímos componentes como o Jersey e o Apache Abdera, que por sua vez devem ter artigos na revista este ano.</p>
<p>O artigo pequeno é no formato "Quick Update" da revista. Nele eu falo sobre os principais projetos relacionados aos serviços REST e os principais acontecimentos nestes projetos. Esta linha de web services vem evoluindo bastante, e por trás disso estão muitos projetos interessantes.</p>
<p>Na minha humilde opinião o artigo maior desta edição é certamente o melhor dos artigos que já escrevi para a revista e acredito que ele pode contribuir como um bom ponto de partida no assunto. Este assunto é talvez o que mais me interessa atualmente, então caso vocês tenham opiniões, comentários ou críticas a fazer, estou aqui para trocar idéias :)</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Query strings in RESTFul web services]]></title>
<link>http://blpsilva.wordpress.com/?p=154</link>
<pubDate>Sat, 05 Apr 2008 13:38:30 +0000</pubDate>
<dc:creator>blpsilva</dc:creator>
<guid>http://blpsilva.pt-br.wordpress.com/2008/04/05/query-strings-in-restful-web-services/</guid>
<description><![CDATA[Atenção, este blog foi migrado para: http://brunopereira.org
I said before that I don&#8217;t like]]></description>
<content:encoded><![CDATA[<p><strong>Atenção, este blog foi migrado para: <a href="http://brunopereira.org" target="_self">http://brunopereira.org</a></strong></p>
<p>I said before that I don't like query strings in RESTFul URIs. You cannot cache the results in the web server and in many cases they lead to a poor design of your URIs.</p>
<p>However, there are cases where query strings are useful and make sense. In the project I'm working right now, we have an asynchronous queue which several server instances consume periodically. This queue has events that must be processed, and each event belongs to a given user. Each user may have several events in the queue.</p>
<p>We have this queue of events that must be processed and we register them in another list when they are successfully processed. When an event is processed, he goes to the "processed" list if everything goes right or he stays in the queue if something gone wrong. In the queue we register how many times we tried to process each event.</p>
<p>In my team we have an application that helps us manage our infrastructure. This application does many things that we previously needed to ask to the operations team or DB team. Something very desirable is to be able to check how the queue is going without needing to check server logs or the database. So we're adding some features in the management application to help us check the queue.</p>
<p>Ok, now let's talk about the RESTful services. We've implemented some services that access the queue. One the of services allows us to check how many events are still in the queue with at least N tries. For example, how many events are pending with at least 1 try?</p>
<p>What's the Resource here? In my opinion the resource is "Pending event". Considering this, I would access this resource doing <strong>GET /event/pending</strong>. Ok, but doing GET /event/pending would probably give us the whole list of pending events. I want pending events with at least 1 try. How can we do that? We <strong>could</strong> do a GET /event/pending/1, and it would work. However, this URI is bad, very bad. If I didn't know what this service was about, I'd probably say this URI returns the first pending event according to some order. Probably it would be the oldest or newest one.</p>
<p>So how do we form this URI? We could also have a GET /event/pending/tries/1. This would indeed be much better than the first URI, but I don't like it either. My resource is "Pending event". Pending events with at least 1 try are still just pending events for me. What I want is just to <strong>filter</strong> the pending events. So, I ended up using <strong>GET /event/pending?t=1</strong>. "t" in this query string stands for "tries". I could also have used <strong>GET /event/pending?tries=1</strong>. As a matter of fact, I think supporting both is nice. It would be similar to command line options in Unix applications.</p>
<p>Now, let's say I want to know the pending events of a given user. Looking at the previous URI, You might say <strong>GET /event/pending?u=123</strong> or <strong>GET /event/pending?user=123</strong>. But in this case, I wouldn't use query strings. The best URI in my opinion is /event/pending/user, and that would lead to <strong>GET /event/pending/user/123. </strong>What's the difference here? I consider the "User" as a meaningful thing. It's another resource. However, "number of tries" for me is just a filter. I don't need to know anything about a specific try, so it's just a filter in this case. Another similiar filter would be "Pending events created before today". We could have another query string parameter to filter events by creation date. Something like <strong>GET /event/pending?c=03/04/2008</strong> or <strong>GET /event/pending?creation=03/04/2008</strong>.</p>
<p>So, I changed my mind a little bit about query strings. They are indeed useful in some cases, such as this example. They are good to <strong>filter results</strong>. Filter by something that it's not a resource. To decide our URIs we must always think of what's really a resource in our application, and what's just a filter. Such as in the world wide web, <strong>URIs identify Resources</strong>. After deciding what's a resource and what's just a filter, we can design our URIs much better. Meaningful URIs are among the most important things in RESTFul web services.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Atom feeds for enterprise application messaging]]></title>
<link>http://blpsilva.wordpress.com/?p=75</link>
<pubDate>Sun, 27 Jan 2008 16:12:59 +0000</pubDate>
<dc:creator>blpsilva</dc:creator>
<guid>http://blpsilva.pt-br.wordpress.com/2008/01/27/atom-feeds-for-enterprise-application-messaging/</guid>
<description><![CDATA[Atenção, este blog foi migrado para: http://brunopereira.org
In the last months I have studied and]]></description>
<content:encoded><![CDATA[<p><strong>Atenção, este blog foi migrado para: <a href="http://brunopereira.org" target="_self">http://brunopereira.org</a></strong></p>
<p>In the last months I have studied and worked a lot with web services in general, and more specifically the RESTful ones. I believe we are going through a fast maturation process in this area, and RESTful web services are becoming the preferred choice for many new implementations. Right in the thick of things in this field is the Atom Publishing Protocol. This is the blueprint solution for RESTful web services, and its adoption is growing fast, reaching much broader scope than just blog applications using the <a href="http://en.wikipedia.org/wiki/Atom_(standard)" target="_blank">Atom Format</a>.The Atom format and AtomPub protocol can both be used for many interesting purposes. This year I'm working on a big refactoring (actually a new implementation) of a widely used <a href="http://www.globo.com" target="_blank">Globo.com</a> application. This application (let's call it Register) is responsible for the creation of new users and provisioning new services to them, among other features.</p>
<p>A nice concept present in the original development is the use of Application Connectors. Through these connectors, other applications get notified of events that happened in the Register application. An example is: when a new subscriber (a paying user) is created, a connector sends the notification to another application in order to create the subscriber's mailbox in the company's external mail provider. Another example is: when a user gets provisioned in the blogging service, another connector sends a notification to the blogger application, that does what it needs in order to create the user's directory and quota on the file server.</p>
<p>Although i like this concept, it currently has some problems. This connector's invocation is done explicitly by the Register application. The Register application knows that a new subscriber must receive a new mailbox, and it needs to call a given connector to do this. This is my biggest concern with the current implementation. I strongly believe that an application that creates users must not know anything about mailboxes. In the current structure, when a new application ABC must be notified of events in application XYZ, application XYZ must be modified to invoke a new connector. This doesn't please me at all. Let me explain a solution that pleases me more ;)</p>
<p>To explain my idea, I'll propose some examples involving Google and its services. As we all know, Google offers several different services, all of which can be accessed using the same Google account. When you register at Google, you receive a mail account. Let's suppose that Google Register application sends a new entry to an Atom feed every time a new user is created. This way, every user creation is present on the Atom Feed. If an application (for example Google Mail) needs to be notified of the creation of new users, it just needs to subscribe to the Register's Atom feed.</p>
<p>Let me propose a richer example now. Let's say Google starts to offer some super cool software development services. If you're a developer, you can ask them to give you a "development account". This development account would give you access to a Subversion repository, a Bugzilla project and a MySql database. Each of these would be an independent service offered by them, subject to change at any given time. The activation of "development accounts" could also populate an Atom feed.</p>
<p>This way the Subversion, Bugzilla and MySql services could be subscribers of the feed, doing everything they need when a new development account is activated, in asynchronous manner. The application that activates the development account has no knowledge of any other services. If Google wants to offer new services such as a Maven repository or a Continuous Integration environment, no problem. The new services would just subscribe to the Atom feed and do whatever they need when a new account is activated.</p>
<p>If Google wants to offer a free development account and a non-free account with better features, there could be another Atom feed for the activation of the paying accounts or maybe updates to the same existing feed. The Register application would know only about registrations, and other components could be easily plugged and unplugged from this process, without modifications on the Register application. Ah, and worth mentioning... totally decoupled from any specific platform. I don't know how to implement any kind of messaging more decoupled than that.</p>
<p>This is much much better than the way our Register application sends notifications currently. And I'll be pretty happy once we manage to do this, it'll be so cool!</p>
<p>By the way, these Google's software development services would be awesome. My friend <a href="http://neobject.wordpress.com" target="_blank">Bairos</a> kindly provides me Subversion and Trac services, but he doesn't have Google's bandwidth :) Let's hope Google gets to know about this and starts offering these services. It'd be amazing!</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[The Best Introduction to JSON I've Found]]></title>
<link>http://xidey.wordpress.com/2008/01/08/the-best-introduction-to-json-ive-found/</link>
<pubDate>Tue, 08 Jan 2008 20:57:10 +0000</pubDate>
<dc:creator>Anthony Stevens</dc:creator>
<guid>http://xidey.pt-br.wordpress.com/2008/01/08/the-best-introduction-to-json-ive-found/</guid>
<description><![CDATA[Can be found in the book RESTful Web Services, by Leonard Richardson, which I&#8217;ve been reading ]]></description>
<content:encoded><![CDATA[<p>Can be found in the book <a href="http://www.amazon.com/gp/product/0596529260?ie=UTF8&#38;tag=httpwwwxideyc-20&#38;linkCode=as2&#38;camp=1789&#38;creative=9325&#38;creativeASIN=0596529260">RESTful Web Services</a>, by Leonard Richardson, which I've been reading at Safari Bookshelf. It's short, sweet, and puts JSON into perspective against all the other AJAX/XML technospeak that bubbles through the tubes.</p>
<p>Go to Section 2.5.  If you have a Safari Bookshelf subscription, it's <a href="http://safari.oreilly.com/9780596529260/json-introduction">here</a>.</p>
<div class="wlWriterSmartContent" style="display:inline;margin:0;padding:0;">Technorati Tags: <a href="http://technorati.com/tags/JSON" rel="tag">JSON</a>,<a href="http://technorati.com/tags/RESTful%20Web%20Services" rel="tag">RESTful Web Services</a>,<a href="http://technorati.com/tags/Leonard%20Richardson" rel="tag">Leonard Richardson</a></div>
<p><img src="http://www.assoc-amazon.com/e/ir?t=httpwwwxideyc-20&#38;l=as2&#38;o=1&#38;a=0596529260" style="border-style:none !important;margin:0;" border="0" height="1" width="1" /></p>
]]></content:encoded>
</item>

</channel>
</rss>
