Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Do REST ao RESTful

                                  Luiz Costa
                       luiz.costa@caelum.com.br
         ...
Integração   O velho problema
O Banco de Dados   Solução Prática #1
Transferência de Arquivos   Solução Prática #2
Web Services   Solução Prática #3
Como são os Web Services hoje?

• Baseados na especificação WS-*

• Descritores WSDL

• SOAP e XML

• Utilizam um estilo RP...
Requisitos não Funcionais
✤   protocolo de transferência de dados amplamente utilizado

✤   escalabilidade

✤   performanc...
Requisitos não Funcionais
✤   http

✤   escalabilidade

✤   performance alta

✤   alta disponibilidade

✤   permitir evolu...
Requisitos não Funcionais
✤   http

✤   web: caches

✤   performance alta

✤   alta disponibilidade

✤   permitir evolução...
Requisitos não Funcionais
✤   http

✤   web: caches

✤   web: proxies, localização geográfica

✤   alta disponibilidade

✤ ...
Requisitos não Funcionais
✤   http

✤   web: caches

✤   web: proxies, localização geográfica

✤   http: load balancers

✤ ...
Requisitos não Funcionais
✤   http

✤   web: caches

✤   web: proxies, localização geográfica

✤   http: load balancers

✤ ...
Requisitos não Funcionais
✤   http

✤   web: caches

✤   web: proxies, localização geográfica

✤   http: load balancers

✤ ...
Requisitos não Funcionais
✤   http

✤   web: caches

✤   web: proxies, localização geográfica

✤   http: load balancers

✤ ...
HTTP faz isso tudo mesmo?



     Me mostre um
        Exemplo
Web   O Sistema Escalável
Protocolos da Internet

         veronica: busca em gopher         smtp: email
   irc: chat
                  wais: busca ...
E hoje?

              smtp: email
          bittorrent: arquivos
              irc, im: chat
          ssh: acesso remoto
home banking: www
    compras: www
   calendário: www
      email: www
       chat: www
  documentos: www
conteúdo restrit...
2000 - Roy Fielding




                      why the web? why?




Do REST Ao RESTful

                                  ...
REpresentational
     State
   Transfer
   O que é isso?
Recursos
É algo interessante para sua
          aplicação.

 Fotos, relatorios, arquivos,
Lista de buracos da BR 101.

 Tu...
Identidade de um Recurso

Para ser encontrado o recurso precisa ser
              identificado.

 Todos os clientes
 http//...
Link os Recursos
Os dados do pedido junto com o cliente


<cliente>
 <id> 23 </id>
 <nome>Joana Cardoso</nome>
 <cpf>12345...
Link os Recursos
Os recursos devem estar ligados entre sí

<cliente>
 <id>23</id>
 <nome>Joana Cardoso</nome>
 <cpf>123456...
Interface Uniforme   Mantendo as coisas simples
Interface Uniforme
Interface Uniforme




    Agora o foco são os
        Recursos.
Interface Uniforme
Recurso /Pedidos/{Identificador}
http://exemplo.com/pedidos/10
•GET() - obtém os detalhes de um pedido e...
Interface Uniforme
Recurso /Pedidos
http://exemplo.com/pedidos
•GET() - lista todos os pedidos

•PUT() - não é utilizado a...
Mas e se alguma coisa der errado?
Códigos de status do HTTP
•100   –   Continue
•200   –   OK
•201   –   Created
•301   – ...
Representações




            Atom
Escolhendo uma Representação
      GET /pedidos/2009/11 HTTP 1.1
            HOST exemplo.com
          Accept: applicatio...
Possíveis representações do recurso:
        http://exemplo.com/clientes/23
         XHTML                        XML


<h...
Falta de Estado   Http é Stateless
Falta de Estado

Basicamente significa não utilizar sessões HTTP.

Sem sessões, favorecemos a escalabilidade.

Os clientes...
Escalabilidade   Falta de estado pode ser bom.
Escalabilidade   Falta de estado pode ser bom.
Escalabilidade   Falta de estado pode ser bom.
Escalabilidade   Falta de estado pode ser bom.
Escalabilidade   Falta de estado pode ser bom.
Escalabilidade   Falta de estado pode ser bom.
Escalabilidade   Falta de estado pode ser bom.
Escalabilidade   Falta de estado pode ser bom.
A solução REST para Java   JSR-311 - JAX-RS
JAX-RS - Definindo um Recurso
@Path("/pedido/{id}")
public class PedidoResource {

 @GET
 @Produces( { MediaType.APPLICATIO...
JAX-RS + JAX-B
Serialização Simples do Modelo
@XmlRootElement
public class Pedido {

    private Long id;
    private Doub...
A vida de um recurso   Nao é apenas CRUD
Recebi meu recurso.
Mas e agora, o que eu posso fazer com ele?

Que ações estão disponiveis para meu recurso?
Com que outr...
Recebi meu recurso.
Mas e agora, o que eu posso fazer com ele?

Que ações estão disponiveis para meu recurso?
Com que outr...
Os possíveis estados de um Pedido
O Recurso pode trazer link’s
para as proximas transições

Os Recursos agora trazem consigo:
   • Dados
   • Linkʼs para ou...
O Recurso pode trazer link’s
para as proximas transições

Os Recursos agora trazem consigo:
  • Dados
                    ...
Hypermedia com JAX-RS   Quebrou a firma.
Hypermedia com JAX-RS?
Precisamos de um Assembler de Recursos
public class PedidoXMLAssembler {
	 private final String LIN...
Hypermedia As The Engine
      Of Application State   HATEOAS
HATEOAS - Hypermedia As The Engine
Of Application State

• Os linkʼs informam os próximos passos válidos
• Seguindo estes ...
http://restfulie.caelum.com.br/




Framework para HATEOAS                  Java, Ruby, c#
Client - Java



Order order = new Order();

// place the order
order = service("http://www.caelum.com.br/order").post(ord...
Server - Java
public class Order implements StateResource {

	 public List<Transition> getFollowingTransitions(Restfulie c...
Client - Ruby
# retrieves the resource through GET: the entry point
order = Order.from_web resource_uri

puts "Order price...
Server - Ruby

class Order < ActiveRecord::Base

  acts_as_restfulie do |transitions|
    transitions << [:show]
    trans...
Obrigado.           Luiz Costa
         luiz.costa@caelum.com.br
                 @gutomcosta
                Sergio Junio...
Upcoming SlideShare
Loading in …5
×

Do Rest Ao Restfull - Rio Jug

1,839 views

Published on

Como tornar seus serviços RESTful. Como e porque usar hypermedia. O que é HATEOAS?

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THAT BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book that can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer that is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story That Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money That the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths that Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, Copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Do Rest Ao Restfull - Rio Jug

  1. 1. Do REST ao RESTful Luiz Costa luiz.costa@caelum.com.br @gutomcosta Sergio Junior sergio.junior@caelum.com.br @sergioazevedo
  2. 2. Integração O velho problema
  3. 3. O Banco de Dados Solução Prática #1
  4. 4. Transferência de Arquivos Solução Prática #2
  5. 5. Web Services Solução Prática #3
  6. 6. Como são os Web Services hoje? • Baseados na especificação WS-* • Descritores WSDL • SOAP e XML • Utilizam um estilo RPC(Remote Procedure Call) Focados em Operações
  7. 7. Requisitos não Funcionais ✤ protocolo de transferência de dados amplamente utilizado ✤ escalabilidade ✤ performance alta ✤ alta disponibilidade ✤ permitir evolução sem parar o sistema ✤ permitir evolução sem quebrar clientes ✤ segurança
  8. 8. Requisitos não Funcionais ✤ http ✤ escalabilidade ✤ performance alta ✤ alta disponibilidade ✤ permitir evolução sem parar o sistema ✤ permitir evolução sem quebrar clientes ✤ segurança
  9. 9. Requisitos não Funcionais ✤ http ✤ web: caches ✤ performance alta ✤ alta disponibilidade ✤ permitir evolução sem parar o sistema ✤ permitir evolução sem quebrar clientes ✤ segurança
  10. 10. Requisitos não Funcionais ✤ http ✤ web: caches ✤ web: proxies, localização geográfica ✤ alta disponibilidade ✤ permitir evolução sem parar o sistema ✤ permitir evolução sem quebrar clientes ✤ segurança
  11. 11. Requisitos não Funcionais ✤ http ✤ web: caches ✤ web: proxies, localização geográfica ✤ http: load balancers ✤ permitir evolução sem parar o sistema ✤ permitir evolução sem quebrar clientes ✤ segurança
  12. 12. Requisitos não Funcionais ✤ http ✤ web: caches ✤ web: proxies, localização geográfica ✤ http: load balancers ✤ http: load balancers ✤ permitir evolução sem quebrar clientes ✤ segurança
  13. 13. Requisitos não Funcionais ✤ http ✤ web: caches ✤ web: proxies, localização geográfica ✤ http: load balancers ✤ http: load balancers ✤ web: html e loosely coupling ✤ segurança
  14. 14. Requisitos não Funcionais ✤ http ✤ web: caches ✤ web: proxies, localização geográfica ✤ http: load balancers ✤ http: load balancers ✤ web: html e loosely coupling ✤ tls: https
  15. 15. HTTP faz isso tudo mesmo? Me mostre um Exemplo
  16. 16. Web O Sistema Escalável
  17. 17. Protocolos da Internet veronica: busca em gopher smtp: email irc: chat wais: busca em banco de dados archie: busca em ftp telnet: acesso remoto gopher, www: hipertexto nntp: fórum de discussão ftp: arquivos prospero: directory services
  18. 18. E hoje? smtp: email bittorrent: arquivos irc, im: chat ssh: acesso remoto
  19. 19. home banking: www compras: www calendário: www email: www chat: www documentos: www conteúdo restrito: www sexo: www
  20. 20. 2000 - Roy Fielding why the web? why? Do REST Ao RESTful Www.caelum.com.br
  21. 21. REpresentational State Transfer O que é isso?
  22. 22. Recursos É algo interessante para sua aplicação. Fotos, relatorios, arquivos, Lista de buracos da BR 101. Tudo é um recurso.
  23. 23. Identidade de um Recurso Para ser encontrado o recurso precisa ser identificado. Todos os clientes http//exemplo.com/clientes Acessando um cliente http//exemplo.com/clientes/10 Acessando outro cliente http//exemplo.com/clientes/23
  24. 24. Link os Recursos Os dados do pedido junto com o cliente <cliente> <id> 23 </id> <nome>Joana Cardoso</nome> <cpf>12345678900</cpf> <pedidos> <pedido> <id>1234</id> <data> 01/10/2009</data> <valor> 100.00 </valor> <items> <produto>33</produto> <quantidade>1</quantidade> <preco>100.00</preco> </items> </pedido> </pedidos> </cliente>
  25. 25. Link os Recursos Os recursos devem estar ligados entre sí <cliente> <id>23</id> <nome>Joana Cardoso</nome> <cpf>12345678900</cpf> <pedidos> <pedido ref=’http://example.com/pedidos/ 1234’ /> </pedido> </pedidos> </cliente>
  26. 26. Interface Uniforme Mantendo as coisas simples
  27. 27. Interface Uniforme
  28. 28. Interface Uniforme Agora o foco são os Recursos.
  29. 29. Interface Uniforme Recurso /Pedidos/{Identificador} http://exemplo.com/pedidos/10 •GET() - obtém os detalhes de um pedido específico •PUT() - atualiza um pedido •POST() - adiciona um item  em um pedido •DELETE() – cancela um pedido
  30. 30. Interface Uniforme Recurso /Pedidos http://exemplo.com/pedidos •GET() - lista todos os pedidos •PUT() - não é utilizado aqui •POST() - adiciona um novo pedido •DELETE() – não é utilizado aqui
  31. 31. Mas e se alguma coisa der errado? Códigos de status do HTTP •100 – Continue •200 – OK •201 – Created •301 – Moved Permanently •303 – See Other •304 – Not Modified •400 – Bad Request •401 – Unauthorized •403 – Forbidden •404 – Not Found •405 – Method Not Allowed •500 – Internal Server Error
  32. 32. Representações Atom
  33. 33. Escolhendo uma Representação GET /pedidos/2009/11 HTTP 1.1 HOST exemplo.com Accept: application/xml 200 OK <pedido … />
  34. 34. Possíveis representações do recurso: http://exemplo.com/clientes/23 XHTML XML <html> <body> <dt>id</dt> <dd>23</dd> <cliente> <id> 23 </id> <dt>nome</dt> <nome>Joana Cardoso</nome> <dd>Joana Cardoso</dd> <cpf>12345678900</cpf> <dt>cpf</dt> </cliente> <dd>12345678901</dd> </body> </html>
  35. 35. Falta de Estado Http é Stateless
  36. 36. Falta de Estado Basicamente significa não utilizar sessões HTTP. Sem sessões, favorecemos a escalabilidade. Os clientes precisam aprender a viver sem sessões.
  37. 37. Escalabilidade Falta de estado pode ser bom.
  38. 38. Escalabilidade Falta de estado pode ser bom.
  39. 39. Escalabilidade Falta de estado pode ser bom.
  40. 40. Escalabilidade Falta de estado pode ser bom.
  41. 41. Escalabilidade Falta de estado pode ser bom.
  42. 42. Escalabilidade Falta de estado pode ser bom.
  43. 43. Escalabilidade Falta de estado pode ser bom.
  44. 44. Escalabilidade Falta de estado pode ser bom.
  45. 45. A solução REST para Java JSR-311 - JAX-RS
  46. 46. JAX-RS - Definindo um Recurso @Path("/pedido/{id}") public class PedidoResource { @GET @Produces( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) public Pedido getPedidoById(@PathParam("id") Long id){ PedidoDAO pedidoDAO = new PedidoDAO(); Pedido pedido = pedidoDAO.getPedidoById(id); return pedido; } }
  47. 47. JAX-RS + JAX-B Serialização Simples do Modelo @XmlRootElement public class Pedido { private Long id; private Double total; private Calendar dataCriacao; private enum status; //Getters e Setters... }
  48. 48. A vida de um recurso Nao é apenas CRUD
  49. 49. Recebi meu recurso. Mas e agora, o que eu posso fazer com ele? Que ações estão disponiveis para meu recurso? Com que outros recursos eu posso interagir?
  50. 50. Recebi meu recurso. Mas e agora, o que eu posso fazer com ele? Que ações estão disponiveis para meu recurso? Com que outros recursos eu posso interagir? Template URI’s podem ajudar?
  51. 51. Os possíveis estados de um Pedido
  52. 52. O Recurso pode trazer link’s para as proximas transições Os Recursos agora trazem consigo: • Dados • Linkʼs para outros recursos (transições de estado) Exemplo: <?xml version="1.0" encoding="UTF-8"?> <pedido> <dataCriacao>2009-11-23T00:15:15Z</dataCriacao> <id>1</id> <total>137.00</total> <status>unpaid</status> <atom:link rel="cancel href="http://localhost:3000/pedido/3"/> <atom:link rel="pay" ref="http://localhost:3000/pagamento/pedido/3"/> </pedido>
  53. 53. O Recurso pode trazer link’s para as proximas transições Os Recursos agora trazem consigo: • Dados é a! to di • Linkʼs para outros recursos (transições de estado) Is Exemplo: m e e r <?xml version="1.0" encoding="UTF-8"?> <pedido> p <id>1</id> H y <dataCriacao>2009-11-23T00:15:15Z</dataCriacao> <total>137.00</total> <status>unpaid</status> <atom:link rel="cancel href="http://localhost:3000/pedido/3"/> <atom:link rel="pay" ref="http://localhost:3000/pagamento/pedido/3"/> </pedido>
  54. 54. Hypermedia com JAX-RS Quebrou a firma.
  55. 55. Hypermedia com JAX-RS? Precisamos de um Assembler de Recursos public class PedidoXMLAssembler { private final String LINK_BASE = "<atom:link rel="%s" href="%s"/>"; public String pedidoToXmlAtom(Pedido pedido, UriInfo uriInfo) throws JAXBException { JAXBContext context = JAXBContext.newInstance(Pedido.class); Marshaller marshaller = context.createMarshaller(); StringWriter out = new StringWriter(); marshaller.marshal(pedido, out); int idx = out.getBuffer().indexOf("</pedido>"); StringBuilder links = getAtomLinks(pedido, uriInfo); out.getBuffer().insert(idx, links.toString()); return out.toString(); } private StringBuilder getAtomLinks(Pedido pedido, UriInfo uriInfo) { StringBuilder builder = new StringBuilder(); if (pedido.getStatus() == PedidoStatus.NOVO) { builder.append(String.format(LINK_BASE, "cancel", uriInfo .getBaseUriBuilder().path("/pedido/" + pedido.getId()) .build())); builder.append(String.format(LINK_BASE, "pay", uriInfo .getBaseUriBuilder().path( "/pagamento/pedido/" + pedido.getId()).build())); } return builder; }
  56. 56. Hypermedia As The Engine Of Application State HATEOAS
  57. 57. HATEOAS - Hypermedia As The Engine Of Application State • Os linkʼs informam os próximos passos válidos • Seguindo estes linkʼs interagimos com os recursos • E assim mudamos o estado da aplicação Após um entry point basta seguir os links Hypermedia descreve o protocolo
  58. 58. http://restfulie.caelum.com.br/ Framework para HATEOAS Java, Ruby, c#
  59. 59. Client - Java Order order = new Order(); // place the order order = service("http://www.caelum.com.br/order").post(order); // cancels it resource(order).getTransition("cancel").execute();
  60. 60. Server - Java public class Order implements StateResource { public List<Transition> getFollowingTransitions(Restfulie control) { if (status.equals("unpaid")) { control.transition("latest"). uses(OrderingController.class).get(this); control.transition("cancel"). uses(OrderingController.class).cancel(this); } return control.getTransitions(); } }
  61. 61. Client - Ruby # retrieves the resource through GET: the entry point order = Order.from_web resource_uri puts "Order price is #{order.price}" # sends a post request to create a payment order.pay payment # sends a delete request order.cancel
  62. 62. Server - Ruby class Order < ActiveRecord::Base acts_as_restfulie do |transitions| transitions << [:show] transitions << [:destroy] if can_cancel? transitions << [:controller => :payments, :action => :create, {:id => id}] if can_pay? end end
  63. 63. Obrigado. Luiz Costa luiz.costa@caelum.com.br @gutomcosta Sergio Junior sergio.junior@caelum.com.br @sergioazevedo

×