You are currently browsing the archives for the rest category


Erlang/OTP no Caelum Tech Day 2009

Hoje aconteceu o Caelum Tech Day 2009, um evento de tecnologia voltado à própria galera que trabalha na Caelum, que ano passado contou com nada menos que Jim Weber falando de RESTful, com exclusividade, antes de sua fantástica palestra no Falando em Java.

O objetivo do evento é compartilharmos entre nós mesmos as coisas que estudamos durante todo o ano. Levantamos então uma porção de assuntos que gostariamos de compartilhar, votamos nos que gostaríamos de ver, e no final, os mais votados são apresentados.

Este ano não tivemos o Jim, mas tivemos muita gente boa da Caelum falando sobre Ruby, JavaScript, Scala, Java, o Guilherme Silveira falando de RESTful junto com o Cauê Guerra e eu falando de Erlang/OTP junto com o Thadeu Russo.

Veja a nossa apresentação logo abaixo e divirtam-se com Erlang!

5 minutos de CouchDB e CouchRest

Normalmente demoro um bom tempo para escrever um tutorial completo, mas dessa vez vou tentar ser o mais breve possível, tanto ao escrever, quanto no resultado final.

O tema é CouchDB, o revolucionario banco de dados orientado a documentos e com interface totalmente RESTful, e a Ruby gem CouchRest, que é uma verdadeira mão-na-roda. Obviamente que, em tão pouco tempo — até para cumprir a promessa inicial –, eu não vou explicar os fundamentos do CouchDB, mas você pode encontrar uma introdução interessante aqui.

A primeira coisa que você precisa fazer é se certificar de que possui Ruby e CouchDB instalados. Caso você ainda não os possua, no Google você encontra inumeras receitas para todo sabor de sistema operacional. No meu caso, estou usando Mac OS X com Ruby EE da Phusion e CouchDB instalado via MacPorts — que acho a maneira mais prática de instação de qualquer coisa; esforço zero.


$ sudo port install couchdb

De qualquer forma, se você quiser uma fonte rápida de informação sobre instalação do CouchDB no seu sistema operacional, consulte o apêndice do livro CouchDB: The Definitive Guide. Lá você encontra um guia rápido para instalação em Windows, Mac OS X, Unix-like e a partir do fonte.

Mão na massa

Bem, com todos os pré-requisitos OK, vamos por a mão na massa logo de uma vez!

1- Instale a gem CouchRest

$ sudo gem install jchris-couchrest

2- Inicie o CouchDB

$ sudo couchdb -b

Acesse http://localhost:5984/_utils. Se você viu um camaradinha relaxando num sofá vermelho no canto superior direito da página, é porque está tudo certo com seu CouchDB. Vamos em frente.

3- Abra um terminal IRB

require 'rubygems'
require 'couchrest'

Tudo requerido corretamente, hora de começar a brincar com nosso banco de dados. Mas antes, vamos criá-lo!

db = CouchRest.database!('http://localhost:5984/my_db')

Agora vamos criar os atributos do documento que será gravado nesse banco.

attributes = { "name" => "Leandro Silva", "blog" => "leandrosilva.com.br", "titles" => ["System Architect", "Blogger"]}

Criado os atributos do documento, vamos gravá-lo.

result = db.save_doc(attributes)

Documento criado! Você pode acessar novamente http://localhost:5984/_utils e ver o que aconteceu até agora. Há um documento criado no banco my_db, com uma revisão apenas, contendo os dados que definimos no hash attributes.

Você também pode acessar informações resultantes da operação anterior através do hash result.

result['id']
result['rev']

Viu? São as mesmas informações que você viu no gerenciador web do CouchDB.

Vamos continuar acessando estas informações [de maneira absurdamente fácil] através da CouchRest.

record = db.get(result['id'])

Veja o hash record. Há duas chaves particularmente interessantes: _id e _rev. Estas duas chaves são equivalentes a id e rev do nosso hash anterior, o result.

Um teste? Compare os resultados abaixo.

result['id']
record['_id']
result['rev']
record['_rev']

Taí, simples assim. Viu a equivalência?

Vamos ver outros campos do nosso registro.

record['titles']

Que tal adicionar mais um titulo?

record['titles'] << 'Polyglot Programmer'

Bem, acho que já é hora de salvar e ir adiante, porque este tutorial tem que ser breve. Vamos lá.

result = db.save_doc(record)

Outra coisa interessante aqui. Vamos conferir a chave rev do nosso hash result.

result['rev']

Diferente da primeira vez que vimos, não? Vá ao gerenciador web do CouchDB e veja se algo mudou. Sim, algo mudou. Agora você tem a opção de navegar pelas revisões do seu documento. Fantástico!

Legal, muito bem por hoje.

db.delete_doc(record)

Agora volte ao gerenciador web do CouchDB e dê um refresh na página de visualização — caso você esteja nela.

O que aconteceu? Sumiu! O registro foi apagado.

Finalizando

$ sudo couchdb -d

Bem, por hoje é só pessoal. Espero que tenha sido realmente útil e que vocês tenham gostado.

Ah! E se gostaram, please, me deem um pontinho lá no WWRails. =p

Web services RESTful em Java com Jersey

Estou estudando hoje a JSR 311 e sua implementação de referência, o projeto Jersey, por conta de um requisito arquitetural que surgiu em meu novo projeto aqui na CVC Turismo. Trata-se da integração de várias aplicações legadas, desenvolvidas com tecnologias completamente heterogêneas – Java, ASP e PL/SQL Web Toolkit.

Estamos, eu e meus colegas da equipe de arquitetura, considerando bastante o uso de web services REST. Por isso meu interesse pelo Jersey, uma vez que a plataforma base desse projeto é Java.

Para aqueles que se interessam pelo assunto, tempos atrás gastei investi um tempo lendo o material produzido pelo Bruno Pereira, o qual considero a melhor referência de REST em lingua portuguesa. (Jabá!!!)

Hoje resolvi ler também um de seus artigos produzidos para a revista Java Magazine – que IMHO não é lá uma ótima revista de Java, mas que volta e meia publica um ou dois artigos interessantes -, para refrescar a memória.

Taí! Para quem quer ter um primeiro contato com Jersey e a JSR 311, ficam aqui as dicas.