O documento discute os princípios de arquitetura RESTful para web services. Ele explica que REST se baseia nos recursos identificados por URIs e na interface uniforme do HTTP para manipular esses recursos através de métodos como GET, PUT, POST e DELETE. A arquitetura RESTful oferece características como tolerância a falhas, escalabilidade e interoperabilidade que tornam o protocolo HTTP adequado para a maioria dos serviços web.
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. Foco nas operações
Serviço Tradicional
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Body>
<m:ObterPedidos xmlns:m=“urn:ServicosPedidos">
<id xsi:Type=‘xsd:integer’>12553</id>
</m:ObterPedidos>
</env:Body>
</env:Envelope>
8. Foco nas operações
Serviço Tradicional
No matter how hard I try, I still
think the WS-* stack is bloated,
opaque, and insanely complex. I
think it's going to be hard to
understand, hard to implement,
hard to interoperate, and hard to
secure.
Tim Bray Director of Web Technologies at Sun
Microsystems.
Fonte:http://qotd.me/q2004-11-02.html
15. Características da Web
• Tolerante a falhas
• Escalável
• Seguro
• Baixo acoplamento
Isso não se parece com as características
que queremos em nossos sistemas hoje?
16.
17. Architectural Styles and
the Design of Network-based
Software Architectures
Dissertação de Doutorado – Roy Fielding - 2000
20. Recursos
É algo interessante para sua
aplicação.
Fotos, relatorios, arquivos,
Lista de buracos da BR 101.
Tudo é um recurso.
21. 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
22. 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>
23. 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>
29. 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
34. Falta de Estado
• Basicamente isso se traduz em não utilizar sessões HTTP.
• Sem sessões, favorecemos a escalabilidade.
• Os clientes precisam aprender a viver sem sessões.
46. Algumas Desvantagens
• Um pouco mais trabalhoso
• Sem geração automática de classes, tal como as IDE’s fazem com wsdl
• A maioria dos proxies web “barram” requisições PUT.
Conclusão Nem tudo são flores
47. Algumas Desvantagens
• Um pouco mais trabalhoso
• Sem geração automática de classes, tal como as IDE’s fazem com wsdl
• A maioria dos proxies web “barram” requisições PUT.
Algumas Vantagens
• Para maioria dos servicos web o protocolo HTTP é suficiente
• REST fornece múltiplas representações para os recursos.
• REST tem altos níveis de interoperabilidade.
Conclusão Nem tudo são flores
48. Algumas Desvantagens
• Um pouco mais trabalhoso
• Sem geração automática de classes, tal como as IDE’s fazem com wsdl
• A maioria dos proxies web “barram” requisições PUT.
Algumas Vantagens
• Para maioria dos servicos web o protocolo HTTP é suficiente
• REST fornece múltiplas representações para os recursos.
• REST tem altos níveis de interoperabilidade.
“Não é porque a WEB funciona que isso significa
que REST é sempre a solução correta.”
“REST é modelo viável para Web Services.”
Conclusão Nem tudo são flores
49. Obrigado.
Luiz Costa
luiz.costa@caelum.com.br
Sergio Junior
sergio.junior@caelum.com.br
FIM