Olá Javeiros,
Pra quem procura outra forma de fazer aplicativos Web, deixando de lado a renderização de páginas no servidor com JSP/JSF e partir para frameworks JavaScript Client Side,
Eu criei uma aplicação de exemplo usando o framework Ember.js com JAX-RS e publiquei no github https://github.com/brunorg/ember-java.
É uma aplicação bem simples e que aborda alguns dos recursos do Ember como computed properties, templates, observers, bindings, helpers.
Além disso ela utiliza o Ember Data com o DS.RESTAdapter e contém alguns ajustes nos serviços REST do lado Java para funcionamento com essa API.
Até onde ví, ficou muito bom, parabéns!
Dúvida: você não usou HATEOAS em ponto algum dos seus serviços, né? Tem planos? O Ember.js ajuda nesse sentido?
[]'s
Muito bom Bruno. Também ando querendo seguir essa linha. Mas estou usando VRaptor e AngularJS.
[quote=Alexandre Saudate]Até onde ví, ficou muito bom, parabéns!
Dúvida: você não usou HATEOAS em ponto algum dos seus serviços, né? Tem planos? O Ember.js ajuda nesse sentido?
[]'s[/quote]
Procurei entender um pouco o que é HATEOAS antes de te responder, mas não compreendi muito bem, vou te explicar como funciona no Ember.
A configuração dos URLs REST no ember-data são geradas (quando usado a convenção) pelo o mapeamento e nome dos Models.
Supondo que o modelo é formado por ‘Post’ e que cada post possa ter vários ‘Comment’ então ele espera que os resultados desses recursos sejam retornados no seguinte formato
(fonte: http://emberjs.com/guides/models/the-rest-adapter/):
Requisição 1: GET /posts/1
Resposta:
{
"post": {
"id": 1,
"title": "Rails is omakase",
"comment_ids": [1, 2, 3]
}
}
Requisição 2: GET /comments?ids[]=1&ids[]=2&ids[]=3
Resposta:
{
"comments": [{
"id": 1,
"body": "But is it _lightweight_ omakase?"
},
{
"id": 2,
"body": "I for one welcome our new omakase overlords"
},
{
"id": 3,
"body": "Put me on the fast track to a delicious dinner"
}]
}
Não sei te dizer se isso é HATEOAS, mas caso queira a API do ember-data permite que você crie seus próprios adapters além dos já fornecidos.
Eu conheço 2 tipos de adapters:
- DS.FixtureAdapter (para criar protótipos sem necessidade do backend)
- DS.RESTAdapter (o que eu usei para conversar com o backend Java)
E equipe do ember estava criando outro Adapter como uma alternativa ao DS.RESTAdapter pra quem precisa personalizar as chamadas ajax.
Frederico, também estou querendo testar o AngularJS, vários colegas já me recomendaram, e fiquei curioso pra saber um pouco mais sobre ele.
HATEOAS é uma técnica REST que te traz os links das ações relacionadas ao recurso corrente. Por exemplo, se eu trouxer uma pessoa do meu serviço REST:
<pessoa>
<id>1</id>
<nome>Alexandre</nome>
<link href="/email/1" rel="enviar email" />
</pessoa>
Note que, se a aplicação utilizar o que está no link, ela vai enviar email para o Alexandre - tudo de uma forma flexível o suficiente para comportar uma mudança na URL de envio de e-mails, por exemplo. Também é um uso válido de HATEOAS trazer links para outros recursos se a entidade atual for muito grande - você economiza largura de banda e ainda deixa seu sistema mais flexível, já que esse uso tem uma tendência de forçar você a modelar REST corretamente.
[]'s
Alexandre, valeu pela explicação. Eu também encontrei mais informações no blog do Steve Klabnik http://blog.steveklabnik.com/posts/2011-07-03-nobody-understands-rest-or-http
Se considerar que HATEOAS é equivalente Hipermedia API então o ember.js não irá ajudar, dê uma olhada nesse também http://madhatted.com/2013/3/19/suggested-rest-api-practices
Alguém tem algum exemplo com AngularJS?