Download - Rest Teoria E Pratica
![Page 2: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/2.jpg)
Integração O velho problema
![Page 3: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/3.jpg)
O Banco de Dados Solução Prática #1
![Page 4: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/4.jpg)
Transferência de Arquivos
Solução Prática #2
![Page 5: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/5.jpg)
Web Services Solução Prática #3
![Page 6: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/6.jpg)
• Baseados na especificação WS-*
• Descritores WSDL
• SOAP e XML
• Utilizam um estilo RPC(Remote Procedure Call)
Como são os Web Services hoje?
Focados em Operações
![Page 7: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/7.jpg)
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>
![Page 8: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/8.jpg)
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
Foco nas operações Serviço Tradicional
![Page 9: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/9.jpg)
Precisamos disso tudo?
Alguém já não resolveu isso?
![Page 10: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/10.jpg)
Web Como funciona?
![Page 11: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/11.jpg)
Web
http://aljazeera.com/
![Page 12: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/12.jpg)
Web apenas para humanos?
“Não existe nenhuma diferença essencial entre a web humana
e a web programável”
Leonard Richardson e Sam Ruby
![Page 13: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/13.jpg)
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?
Isso não se parece com as características que queremos em
nossos sistemas hoje?
![Page 14: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/14.jpg)
![Page 15: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/15.jpg)
Architectural Styles andArchitectural Styles andthe Design of Network-based the Design of Network-based
Software ArchitecturesSoftware Architectures
Architectural Styles andArchitectural Styles andthe Design of Network-based the Design of Network-based
Software ArchitecturesSoftware ArchitecturesDissertação de Doutorado – Roy Fielding - 2000Dissertação de Doutorado – Roy Fielding - 2000Dissertação de Doutorado – Roy Fielding - 2000Dissertação de Doutorado – Roy Fielding - 2000
![Page 16: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/16.jpg)
REST
![Page 17: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/17.jpg)
REpresentational
State Transfer
O que é isso?
![Page 18: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/18.jpg)
Recursos
É algo interessante para sua aplicação.
Fotos, relatorios, arquivos, Lista de buracos da BR 101.
Tudo é um recurso.
![Page 19: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/19.jpg)
Identidade de um Recurso
Para ser encontrado o recurso precisa ser identificado.
Todos os clienteshttp//exemplo.com/clientes
Acessando um clientehttp//exemplo.com/clientes/10
Acessando outro clientehttp//exemplo.com/clientes/23
![Page 20: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/20.jpg)
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>
![Page 21: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/21.jpg)
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>
![Page 22: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/22.jpg)
Interface Uniforme Mantendo as coisas simples
![Page 23: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/23.jpg)
Agora o foco são os Recursos.
Agora o foco são os Recursos.
Interface Uniforme
![Page 24: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/24.jpg)
Interface Uniforme Recurso /Pedidos/{Identificador}
•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
http://exemplo.com/pedidos/10http://exemplo.com/pedidos/10
![Page 25: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/25.jpg)
Interface Uniforme Recurso /Pedidos
•GET() - lista todos os pedidos
•PUT() - não é utilizado aqui
•POST() - adiciona um novo pedido
•DELETE() – não é utilizado aqui
http://exemplo.com/pedidoshttp://exemplo.com/pedidos
![Page 26: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/26.jpg)
Mas e se alguma coisa der errado?
•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
Códigos de status do HTTP
![Page 27: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/27.jpg)
Representações
Atom
![Page 28: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/28.jpg)
Escolhendo uma RepresentaçãoGET /pedidos/2009/11 HTTP 1.1
HOST exemplo.comAccept: application/xml
200 OK<pedido … />
![Page 29: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/29.jpg)
XHTML XML
<html><body><dt>id</dt> <dd>23</dd><dt>nome</dt> <dd>Joana Cardoso</dd><dt>cpf</dt> <dd>12345678901</dd></body></html>
<cliente> <id> 23 </id> <nome>Joana Cardoso</nome> <cpf>12345678900</cpf></cliente>
Possíveis representações do recurso:http://exemplo.com/clientes/23
![Page 30: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/30.jpg)
Falta de Estado
![Page 31: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/31.jpg)
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.
![Page 32: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/32.jpg)
Escalabilidade Falta de estado pode ser bom.
![Page 33: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/33.jpg)
Escalabilidade Falta de estado pode ser bom.
![Page 34: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/34.jpg)
A arquitetura simplicidade
Recursos físicos
Recursos Lógicos
Interface Uniforme(Web Server)
Representação do Recurso
(e.g. XML document)
Cliente(Web Client)
![Page 35: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/35.jpg)
Demonstração show me the code!
![Page 36: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/36.jpg)
Recursos Vamos identificar os recursos
![Page 37: Rest Teoria E Pratica](https://reader036.vdocuments.mx/reader036/viewer/2022062405/55720b4cd8b42ae8098b4f04/html5/thumbnails/37.jpg)
Conclusão Nem tudo são flores
Algumas DesvantagensAlgumas 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 Não é porque a WEB funciona que isso significa que REST é sempre a solução correta.”que REST é sempre a solução correta.”
““REST é modelo viável para Web Services.”REST é modelo viável para Web Services.”