RESTSaturday, 2 June 2012
@CBSANCHEZ• Programando desde 1997• LISP, C++, Java, Ruby, outras• Leitor eXtremeSaturday, 2 June 2012
INTEGRAÇÃOSaturday, 2 June 2012
COM+RMISÓ ENTRE ELESCORBA(PELO MENOS ELETENTOU)Saturday, 2 June 2012
SOAPRESTAMIGO DA GAROTADASaturday, 2 June 2012
SOAP• Transporte Genérico (HTTP/HTTPS, JMS, SMTP)• XML• WS-*• Statefull (WS-Security/WS-Coordination/WS-Transaction)Saturd...
REST• Transport HTTP/HTTPS• XML/JSON/Outros• Hypermedia• StatelessSaturday, 2 June 2012
SOAENTERPRISESaturday, 2 June 2012
RESTMOBILESaturday, 2 June 2012
O INÍCIO (WEB)Saturday, 2 June 2012
FRAMEWORKSGET POSTSaturday, 2 June 2012
PUT? DELETE? PRA QUE?Saturday, 2 June 2012
ROY FIELDINGano: 2000Saturday, 2 June 2012
REPRESENTATIONALSTATETRANSFERSaturday, 2 June 2012
RESTa style of software architectureSaturday, 2 June 2012
RESTFULimplementing such an architectureSaturday, 2 June 2012
JSR 311: JAX-RSJERSEYRESTEASYCXFWCFTAMBÉMRESTFULIESaturday, 2 June 2012
VAMOS PRO RESTSaturday, 2 June 2012
RESOURCE BASEDSaturday, 2 June 2012
• Todos os recursos (resources) são identificáveis• Um recurso possui várias representações• Link entre os recursos• Usar o...
ID DE RECURSOShttp://gdata.youtube.com/feeds/users/MysteryGuitarManSaturday, 2 June 2012
ID DE RECURSOS• http://restbucks.com/customers/1234• http://restbucks.com/orders/2007/10/776654• http://restbucks.com/cust...
RECURSOQUALQUER ABSTRAÇÃO! MESMO!Saturday, 2 June 2012
REPRESENTAÇÃOSEU RECURSO EMVÁRIAS FORMAS!XHTMLXMLJSONCUSTOMATOMSaturday, 2 June 2012
LINK ENTRE RECURSOS<order self=http://restbucks.com/customers/1234><amount>2</amount><product ref=http://restbucks.com/pro...
SEGUROSem efeitos colaterais no servidor!Saturday, 2 June 2012
IDEMPOTENTEÉ a propriedade de certas operações na matemática ecomputação onde o estado do recurso/aplicação não semodifica ...
MÉTODOS PADRÃO• GET – Seguro, Idempotente – Recupera um recurso• PUT – Idempotente – Cria ou atualiza um recursoidentificad...
COMUNICAÇÃO STATELESS• Estado no recurso ou no cliente• Reduz o overload do server• Reduz o acoplamento do cliente com o s...
CRUDHYPERMEDIASaturday, 2 June 2012
CRUDSaturday, 2 June 2012
CRUDTRADICIONALSaturday, 2 June 2012
CRUD RESTSaturday, 2 June 2012
CÓDIGOS HTTP200 - OK201 - OK, Created204 - OK, No content404 - Not Found405 - Method Not AllowedSaturday, 2 June 2012
HYPERMEDIASaturday, 2 June 2012
HYPERMEDIALinks vem de HyperLinks...HyperMedia vem do uso de HyperLinks...Saturday, 2 June 2012
REPRESENTAÇÃOA WEB É AGNOSTICA AO FORMATO,SEU CLIENTE NÃO!Saturday, 2 June 2012
REPRESENTAÇÃO<order xmlns="http://schemas.restbucks.com"><location>takeAway</location><item><name>latte</name><quantity>1<...
REPRESENTAÇÃO MELHOR<order xmlns="http://schemas.restbucks.com"><location>takeAway</location><item><name>latte</name><quan...
UMA REPRESENTAÇÃO BEMMELHOR<order xmlns="http://schemas.restbucks.com"><location>takeAway</location><item><name>latte</nam...
UMA REPRESENTAÇÃO BEMMELHOR (AINDA!)<order xmlns="http://schemas.restbucks.com"><location>takeAway</location><item><name>l...
RESTFULIE• Java, Ruby, Objective-C• Hypermedia• Elegante!!Saturday, 2 June 2012
RESTFULIE EVERBOS HTTP• destroy, cancel, delete: DELETE• update: PUT• refresh, reload, show, latest: GET• outros: POSTSatu...
CLIENTE RESTFULIE// lista de relaçõesList<Relation> relations = resource(order).getRelations();Order order = new Order();/...
TRANSAÇÕESSaturday, 2 June 2012
TRANSAÇÕESCOMPENSATÓRIAS• Transações ACID• Sistema sabe como desfazerSaturday, 2 June 2012
TRY-CANCEL/CONFIRMSaturday, 2 June 2012
TRY-CANCEL/CONFIRM<order xmlns="http://schemas.restbucks.com"><location>takeAway</location><item><name>latte</name><quanti...
MAIS INFORMAÇÕES• Rest In Practice, Jim WebberSaturday, 2 June 2012
MAIS INFORMAÇÕES• http://www.infoq.com/articles/rest-introduction• http://restfulie.caelum.com.br/• http://jersey.java.net...
OBRIGADO!Saturday, 2 June 2012
Upcoming SlideShare
Loading in …5
×

REST Overview

369 views

Published on

Palestra sobre REST para evento interno da Lab360.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

REST Overview

  1. 1. RESTSaturday, 2 June 2012
  2. 2. @CBSANCHEZ• Programando desde 1997• LISP, C++, Java, Ruby, outras• Leitor eXtremeSaturday, 2 June 2012
  3. 3. INTEGRAÇÃOSaturday, 2 June 2012
  4. 4. COM+RMISÓ ENTRE ELESCORBA(PELO MENOS ELETENTOU)Saturday, 2 June 2012
  5. 5. SOAPRESTAMIGO DA GAROTADASaturday, 2 June 2012
  6. 6. SOAP• Transporte Genérico (HTTP/HTTPS, JMS, SMTP)• XML• WS-*• Statefull (WS-Security/WS-Coordination/WS-Transaction)Saturday, 2 June 2012
  7. 7. REST• Transport HTTP/HTTPS• XML/JSON/Outros• Hypermedia• StatelessSaturday, 2 June 2012
  8. 8. SOAENTERPRISESaturday, 2 June 2012
  9. 9. RESTMOBILESaturday, 2 June 2012
  10. 10. O INÍCIO (WEB)Saturday, 2 June 2012
  11. 11. FRAMEWORKSGET POSTSaturday, 2 June 2012
  12. 12. PUT? DELETE? PRA QUE?Saturday, 2 June 2012
  13. 13. ROY FIELDINGano: 2000Saturday, 2 June 2012
  14. 14. REPRESENTATIONALSTATETRANSFERSaturday, 2 June 2012
  15. 15. RESTa style of software architectureSaturday, 2 June 2012
  16. 16. RESTFULimplementing such an architectureSaturday, 2 June 2012
  17. 17. JSR 311: JAX-RSJERSEYRESTEASYCXFWCFTAMBÉMRESTFULIESaturday, 2 June 2012
  18. 18. VAMOS PRO RESTSaturday, 2 June 2012
  19. 19. RESOURCE BASEDSaturday, 2 June 2012
  20. 20. • Todos os recursos (resources) são identificáveis• Um recurso possui várias representações• Link entre os recursos• Usar os métodos da plataforma• Comunicação statelessPRINCÍPIOSSaturday, 2 June 2012
  21. 21. ID DE RECURSOShttp://gdata.youtube.com/feeds/users/MysteryGuitarManSaturday, 2 June 2012
  22. 22. ID DE RECURSOS• http://restbucks.com/customers/1234• http://restbucks.com/orders/2007/10/776654• http://restbucks.com/customers/1234/products• http://restbucks.com/products?brand=sonySaturday, 2 June 2012
  23. 23. RECURSOQUALQUER ABSTRAÇÃO! MESMO!Saturday, 2 June 2012
  24. 24. REPRESENTAÇÃOSEU RECURSO EMVÁRIAS FORMAS!XHTMLXMLJSONCUSTOMATOMSaturday, 2 June 2012
  25. 25. LINK ENTRE RECURSOS<order self=http://restbucks.com/customers/1234><amount>2</amount><product ref=http://restbucks.com/products/4554 /><customer ref=http://restbucks.com/customers/1234 /></order>Saturday, 2 June 2012
  26. 26. SEGUROSem efeitos colaterais no servidor!Saturday, 2 June 2012
  27. 27. IDEMPOTENTEÉ a propriedade de certas operações na matemática ecomputação onde o estado do recurso/aplicação não semodifica após multiplas invocações.Saturday, 2 June 2012
  28. 28. MÉTODOS PADRÃO• GET – Seguro, Idempotente – Recupera um recurso• PUT – Idempotente – Cria ou atualiza um recursoidentificado por uma URI• DELETE – Idempotente – Exclui um recurso• POST – Inseguro – Cria um recursoSaturday, 2 June 2012
  29. 29. COMUNICAÇÃO STATELESS• Estado no recurso ou no cliente• Reduz o overload do server• Reduz o acoplamento do cliente com o servidorSaturday, 2 June 2012
  30. 30. CRUDHYPERMEDIASaturday, 2 June 2012
  31. 31. CRUDSaturday, 2 June 2012
  32. 32. CRUDTRADICIONALSaturday, 2 June 2012
  33. 33. CRUD RESTSaturday, 2 June 2012
  34. 34. CÓDIGOS HTTP200 - OK201 - OK, Created204 - OK, No content404 - Not Found405 - Method Not AllowedSaturday, 2 June 2012
  35. 35. HYPERMEDIASaturday, 2 June 2012
  36. 36. HYPERMEDIALinks vem de HyperLinks...HyperMedia vem do uso de HyperLinks...Saturday, 2 June 2012
  37. 37. REPRESENTAÇÃOA WEB É AGNOSTICA AO FORMATO,SEU CLIENTE NÃO!Saturday, 2 June 2012
  38. 38. REPRESENTAÇÃO<order xmlns="http://schemas.restbucks.com"><location>takeAway</location><item><name>latte</name><quantity>1</quantity><size>small</size></item><cost>2.59</costs><status>payment-expected</status><order>Saturday, 2 June 2012
  39. 39. REPRESENTAÇÃO MELHOR<order xmlns="http://schemas.restbucks.com"><location>takeAway</location><item><name>latte</name><quantity>1</quantity><size>small</size></item><cost>2.59</costs><status>payment-expected</status><payment>http://restbucks.com/payment/1234</payment><cancel>http://restbucks.com/payment/1234</cancel></order>Saturday, 2 June 2012
  40. 40. UMA REPRESENTAÇÃO BEMMELHOR<order xmlns="http://schemas.restbucks.com"><location>takeAway</location><item><name>latte</name><quantity>1</quantity><size>small</size></item><cost>2.59</costs><status>payment-expected</status><link action="payment" href="http://restbucks.com/payment/1234" /><link action="cancel" href="http://restbucks.com/payment/1234" /></order>Saturday, 2 June 2012
  41. 41. UMA REPRESENTAÇÃO BEMMELHOR (AINDA!)<order xmlns="http://schemas.restbucks.com"><location>takeAway</location><item><name>latte</name><quantity>1</quantity><size>small</size></item><cost>2.59</costs><status>payment-expected</status><atom:link rel="payment" href="http://restbucks.com/payment/1234" /><atom:link rel="cancel" href="http://restbucks.com/payment/1234" /></order>Saturday, 2 June 2012
  42. 42. RESTFULIE• Java, Ruby, Objective-C• Hypermedia• Elegante!!Saturday, 2 June 2012
  43. 43. RESTFULIE EVERBOS HTTP• destroy, cancel, delete: DELETE• update: PUT• refresh, reload, show, latest: GET• outros: POSTSaturday, 2 June 2012
  44. 44. CLIENTE RESTFULIE// lista de relaçõesList<Relation> relations = resource(order).getRelations();Order order = new Order();// envia um Pedidoorder = service("http://restbucks.com/order").post(order);// cancela uma ordemresource(order).getRelation("cancel").execute();Saturday, 2 June 2012
  45. 45. TRANSAÇÕESSaturday, 2 June 2012
  46. 46. TRANSAÇÕESCOMPENSATÓRIAS• Transações ACID• Sistema sabe como desfazerSaturday, 2 June 2012
  47. 47. TRY-CANCEL/CONFIRMSaturday, 2 June 2012
  48. 48. TRY-CANCEL/CONFIRM<order xmlns="http://schemas.restbucks.com"><location>takeAway</location><item><name>latte</name><quantity>1</quantity><size>small</size></item><cost>2.59</costs><status>payment-expected</status><atom:link rel="payment" href="http://restbucks.com/payment/1234" /><atom:link rel="cancel" href="http://restbucks.com/payment/1234" /></order>Saturday, 2 June 2012
  49. 49. MAIS INFORMAÇÕES• Rest In Practice, Jim WebberSaturday, 2 June 2012
  50. 50. MAIS INFORMAÇÕES• http://www.infoq.com/articles/rest-introduction• http://restfulie.caelum.com.br/• http://jersey.java.net/Saturday, 2 June 2012
  51. 51. OBRIGADO!Saturday, 2 June 2012

×