SlideShare uma empresa Scribd logo
1 de 64
Baixar para ler offline
Rest in Practice:
   Hypermedia and Services
                          Guilherme Silveira




Wednesday, June 8, 2011
Guilherme Silveira




Wednesday, June 8, 2011
@guilhermecaelum

                          guilherme.silveira@caelum.com.br




Wednesday, June 8, 2011
11 years, 1992: “Basic”




Wednesday, June 8, 2011
2002 guj.com.br
                           2003 vraptor




Wednesday, June 8, 2011
2004 extreme programming
                             2006 scrum
                                 ...



Wednesday, June 8, 2011
2009 restfulie




                          http://restfulie.caelumobjects.com/

Wednesday, June 8, 2011
2010 tectura




                          http://www.tectura.com.br




Wednesday, June 8, 2011
2004 caelum - daily life




                              www.caelum.com.br



Wednesday, June 8, 2011
blogs


                              blog.caelum.com.br
                          agilenomundoreal.com.br
                           blog.caelumobjects.com




Wednesday, June 8, 2011
bank.com




Wednesday, June 8, 2011
bank.com                  calendar.com




Wednesday, June 8, 2011
bank.com                  calendar.com




 travel.com
Wednesday, June 8, 2011
bank.com                  calendar.com




 travel.com company.com
Wednesday, June 8, 2011
bank.com                  calendar.com




 travel.com company.com
Wednesday, June 8, 2011
what is the future
                           of integration
                           over the web?

Wednesday, June 8, 2011
what was REST?


Wednesday, June 8, 2011
Restful Web


                              Services




Wednesday, June 8, 2011
Restful Web

       create a saas account

                               Services




Wednesday, June 8, 2011
Restful Web

       create a saas account


                     freeze account
                                      Services




Wednesday, June 8, 2011
Restful Web

       create a saas account


                     freeze account
                                      Services

              reactivate account




Wednesday, June 8, 2011
Web




              Restful           Services
Wednesday, June 8, 2011
Web
                          http




              Restful            Services
Wednesday, June 8, 2011
Web
                           http

                          port 80




              Restful               Services
Wednesday, June 8, 2011
Web
                               http

                             port 80


                          firewall heaven


              Restful                  Services
Wednesday, June 8, 2011
Web Services


            Restful




Wednesday, June 8, 2011
Web Services

                             xml, json
            Restful




Wednesday, June 8, 2011
Web Services

                             xml, json
            Restful
                            get, post, ...




Wednesday, June 8, 2011
unresttrips.com: flight details



     <?xml version="1.0" encoding="UTF-8" standalum="yes"?>
     <flight>
       <information>
         <from>sao paulo</from>
         <to>seoul</to>
       </information>
       <value>900.00</value>
     </flight>




Wednesday, June 8, 2011
service locator when integrating:
                                        coupling++

                                           unrest
                                            pay


                                   unresttrips.com

                     guilherme




Wednesday, June 8, 2011
service locator when integrating:
                                        coupling++

                                           unrest
                                            pay


                                   unresttrips.com

                     guilherme




Wednesday, June 8, 2011
resttrips.com: flight details



     <?xml version="1.0" encoding="UTF-8" standalum="yes"?>
     <flight>
       <information>
         <from>sao paulo</from>
         <to>seoul</to>
       </information>
       <value>900.00</value>
       <link rel="payment"
                   href="http://resttrips.com/payment/custom"/
     </flight>



Wednesday, June 8, 2011
resttrips.com: making the payment




       flight = Client.at('http://resttrips.com/f/574XR4').get();

       confirmation = flight.getLink("payment").
                         patch(cardInformation, value);




Wednesday, June 8, 2011
resttrips.com: changing its payment provider


     <?xml version="1.0" encoding="UTF-8" standalum="yes"?>
     <flight>
       <information>
         <from>sao paulo</from>
         <to>seoul</to>
       </information>
       <value>900.00</value>
       <link rel="payment"
                   href="http://paysite.com/custom"/>
     </flight>




Wednesday, June 8, 2011
dependency injection when integrating:

                                        coupling--

                                         restrips
                                           pay

                                   resttrips.com


                     guilherme




                                         paysite.com


Wednesday, June 8, 2011
dependency injection when integrating:

                                        coupling--

                                         restrips
                                           pay

                                   resttrips.com


                     guilherme




                                         paysite.com


Wednesday, June 8, 2011
i never travel alone



Wednesday, June 8, 2011
my friend
                           sergio




Wednesday, June 8, 2011
resttrips.com: sharing a trip


           flight = Client.at('http://resttrips.com/f/574XR4').get();

           confirmation = flight.getLink("payment").
                             patch(cardInformation, value/2);

           // send the payment link to another part of the web

           flight = Client.at('http://resttrips.com/f/574XR4').get();

           confirmation = flight.getLink("payment").
                             patch(cardInformation, value/2);




Wednesday, June 8, 2011
resttrips.com: sharing a trip


           flight = Client.at('http://resttrips.com/f/574XR4').get();

           confirmation = flight.getLink("payment").
                             patch(cardInformation, value/2);

           // send the payment link to another part of the web

           flight = Client.at('http://resttrips.com/f/574XR4').get();

           confirmation = flight.getLink("payment").
                             patch(cardInformation, value/2);




Wednesday, June 8, 2011
resttrips.com: sharing a trip


           flight = Client.at('http://resttrips.com/f/574XR4').get();

           confirmation = flight.getLink("payment").
                             patch(cardInformation, value/2);

           // send the payment link to another part of the web

           flight = Client.at('http://resttrips.com/f/574XR4').get();

           confirmation = flight.getLink("payment").
                             patch(cardInformation, value/2);




Wednesday, June 8, 2011
calendar: integrating my systems


             myself = Client.at('http://users.calendar.com')
                                             .with(auth).get();

             myself.link("calendar").patch(flight.link("self"));




Wednesday, June 8, 2011
calendar: integrating my systems


             myself = Client.at('http://users.calendar.com')
                                             .with(auth).get();

             myself.link("calendar").patch(flight.link("self"));




Wednesday, June 8, 2011
calendar: more examples



      me.link("calendar").patch(link_to_birthday_list)
      me.link("calendar").patch(link_to_hotel_reservation)
      me.link("calendar").patch(link_to_trip_details)




Wednesday, June 8, 2011
so what?




Wednesday, June 8, 2011
Any update on the flight ==> reflects here
                          Any update on the hotel ==> reflects here
                          Any update on the meeting ==> reflects here




                                                   so what?




Wednesday, June 8, 2011
Any update on the flight ==> reflects here
                          Any update on the hotel ==> reflects here
                          Any update on the meeting ==> reflects here




                                                        at e!
                                                  te gr
                                                e, in
                                           st us      so what?
                                  ’t   j u
                              don



Wednesday, June 8, 2011
so what? that was just keeping an URI.




Wednesday, June 8, 2011
so what? that was just keeping an URI.




                          Remove ==> Cancels the flight
                          Remove ==> Cancels the reservation
                          Remove ==> Emails your coworkers



Wednesday, June 8, 2011
so what? that was just keeping an URI.




                                                       rol!
                                                  cont
                                         ali ze
                                    en tr
                             notc
                           o
                          dRemove==> Cancels the flight
                          Remove ==> Cancels the reservation
                          Remove ==> Emails your coworkers



Wednesday, June 8, 2011
does our ‘rest’
                          systems built in
                               2010
                          work this way?
Wednesday, June 8, 2011
so what? that was just keeping an URI.




                          Remove ==> Cancels the flight
                          Remove ==> Cancels the reservation
                          Remove ==> Emails your coworkers

Wednesday, June 8, 2011
so what? that was just keeping an URI.




                                                           at?
                                                    or   m
                                                 h f
                                          h ic
                                  bu tw

                          Remove ==> Cancels the flight
                          Remove ==> Cancels the reservation
                          Remove ==> Emails your coworkers

Wednesday, June 8, 2011
#json, #xml,
                          #soap #etc?

Wednesday, June 8, 2011
which #json, #xml
                                #etc?


Wednesday, June 8, 2011
exercise


Wednesday, June 8, 2011
so what?




Wednesday, June 8, 2011
so what?




                          micro formats, media types, rdf etc

Wednesday, June 8, 2011
so what?



                                                                nk s!
                                                        er li
                                                     hyp
                                            w i   th
                                      ats
                                  orm
                                 f
                            icro
                          m

                          micro formats, media types, rdf etc

Wednesday, June 8, 2011
integration over the web




Wednesday, June 8, 2011
must ignore



Wednesday, June 8, 2011
bottom up
                           design by committe
                               mime type?
                              microformat
                          controlled vocabulary


Wednesday, June 8, 2011
hypermedia
                          integration over the web




Wednesday, June 8, 2011
guilherme.silveira@caelum.com.br   http://www.caelumobjects.com




                          obrigado
                          @guilhermecaelum




Wednesday, June 8, 2011

Mais conteúdo relacionado

Semelhante a LT 08 - Guilherme Silveira - Cache hipermidia

iPhone Python love affair
iPhone Python love affairiPhone Python love affair
iPhone Python love affairAnna Callahan
 
Mobility in the financial industry
Mobility in the financial industryMobility in the financial industry
Mobility in the financial industryVincent Everts
 
Choosing the right Content Management System
Choosing the right Content Management SystemChoosing the right Content Management System
Choosing the right Content Management SystemRachel Andrew
 
Koss, How to make desktop caliber browser apps
Koss, How to make desktop caliber browser appsKoss, How to make desktop caliber browser apps
Koss, How to make desktop caliber browser appsEvil Martians
 
YOU WILL REGRET THIS
YOU WILL REGRET THISYOU WILL REGRET THIS
YOU WILL REGRET THISMononcQc
 
A Look at the Future of HTML5
A Look at the Future of HTML5A Look at the Future of HTML5
A Look at the Future of HTML5Tim Wright
 
Opera Mobile HTML5 CSS3 Standards
Opera Mobile HTML5 CSS3 StandardsOpera Mobile HTML5 CSS3 Standards
Opera Mobile HTML5 CSS3 StandardsZi Bin Cheah
 
Hack Your Life: Winter College 2012
Hack Your Life: Winter College 2012Hack Your Life: Winter College 2012
Hack Your Life: Winter College 2012Miami University
 
Javascript Views, Client-side or Server-side with NodeJS
Javascript Views, Client-side or Server-side with NodeJSJavascript Views, Client-side or Server-side with NodeJS
Javascript Views, Client-side or Server-side with NodeJSSylvain Zimmer
 
Aula 2,3 e 4 Publicidade Online
Aula 2,3 e 4 Publicidade OnlineAula 2,3 e 4 Publicidade Online
Aula 2,3 e 4 Publicidade OnlineKarina Rocha
 
Super Awesome Interactions with jQuery
Super Awesome Interactions with jQuerySuper Awesome Interactions with jQuery
Super Awesome Interactions with jQueryZURB
 

Semelhante a LT 08 - Guilherme Silveira - Cache hipermidia (12)

iPhone Python love affair
iPhone Python love affairiPhone Python love affair
iPhone Python love affair
 
Mobility in the financial industry
Mobility in the financial industryMobility in the financial industry
Mobility in the financial industry
 
Choosing the right Content Management System
Choosing the right Content Management SystemChoosing the right Content Management System
Choosing the right Content Management System
 
Koss, How to make desktop caliber browser apps
Koss, How to make desktop caliber browser appsKoss, How to make desktop caliber browser apps
Koss, How to make desktop caliber browser apps
 
YOU WILL REGRET THIS
YOU WILL REGRET THISYOU WILL REGRET THIS
YOU WILL REGRET THIS
 
Messaging patterns
Messaging patternsMessaging patterns
Messaging patterns
 
A Look at the Future of HTML5
A Look at the Future of HTML5A Look at the Future of HTML5
A Look at the Future of HTML5
 
Opera Mobile HTML5 CSS3 Standards
Opera Mobile HTML5 CSS3 StandardsOpera Mobile HTML5 CSS3 Standards
Opera Mobile HTML5 CSS3 Standards
 
Hack Your Life: Winter College 2012
Hack Your Life: Winter College 2012Hack Your Life: Winter College 2012
Hack Your Life: Winter College 2012
 
Javascript Views, Client-side or Server-side with NodeJS
Javascript Views, Client-side or Server-side with NodeJSJavascript Views, Client-side or Server-side with NodeJS
Javascript Views, Client-side or Server-side with NodeJS
 
Aula 2,3 e 4 Publicidade Online
Aula 2,3 e 4 Publicidade OnlineAula 2,3 e 4 Publicidade Online
Aula 2,3 e 4 Publicidade Online
 
Super Awesome Interactions with jQuery
Super Awesome Interactions with jQuerySuper Awesome Interactions with jQuery
Super Awesome Interactions with jQuery
 

Mais de DNAD

LT 07 - Glauber de Almeida - DRY
LT 07 - Glauber de Almeida - DRYLT 07 - Glauber de Almeida - DRY
LT 07 - Glauber de Almeida - DRYDNAD
 
LT 06 - Douglas Aguiar - Quem nao se comunica se trumbica
LT 06 - Douglas Aguiar - Quem nao se comunica se trumbicaLT 06 - Douglas Aguiar - Quem nao se comunica se trumbica
LT 06 - Douglas Aguiar - Quem nao se comunica se trumbicaDNAD
 
LT 02 - Rodrigo Kumpera - Rodando c sharp
LT 02 - Rodrigo Kumpera - Rodando c sharpLT 02 - Rodrigo Kumpera - Rodando c sharp
LT 02 - Rodrigo Kumpera - Rodando c sharpDNAD
 
LT 01 - Rodrigo Yoshima - Business vsarchitecture
LT 01 - Rodrigo Yoshima - Business vsarchitectureLT 01 - Rodrigo Yoshima - Business vsarchitecture
LT 01 - Rodrigo Yoshima - Business vsarchitectureDNAD
 
LT 04 - Denis Ferrari - Como lidar com as dificuldades da primeira sprint - dnad
LT 04 - Denis Ferrari - Como lidar com as dificuldades da primeira sprint - dnadLT 04 - Denis Ferrari - Como lidar com as dificuldades da primeira sprint - dnad
LT 04 - Denis Ferrari - Como lidar com as dificuldades da primeira sprint - dnadDNAD
 
02a - Leandro Daniel - Examinando a arquitetura evolucionária
02a -  Leandro Daniel - Examinando a arquitetura evolucionária02a -  Leandro Daniel - Examinando a arquitetura evolucionária
02a - Leandro Daniel - Examinando a arquitetura evolucionáriaDNAD
 
07 - Osvaldo Daibert - Cenários para cache de dados distribuidos
07  - Osvaldo Daibert - Cenários para cache de dados distribuidos07  - Osvaldo Daibert - Cenários para cache de dados distribuidos
07 - Osvaldo Daibert - Cenários para cache de dados distribuidosDNAD
 
08 - Otavio Pecego - Arquitetura e nuvem: o que muda?
08 - Otavio Pecego - Arquitetura e nuvem: o que muda?08 - Otavio Pecego - Arquitetura e nuvem: o que muda?
08 - Otavio Pecego - Arquitetura e nuvem: o que muda?DNAD
 
06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDDDNAD
 
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TIDNAD
 
02c - Vinicius Quaiato - Over Patternization, YAGNI, KISS
02c - Vinicius Quaiato - Over Patternization, YAGNI, KISS02c - Vinicius Quaiato - Over Patternization, YAGNI, KISS
02c - Vinicius Quaiato - Over Patternization, YAGNI, KISSDNAD
 
02b - Elemar Jr. - Examinando a Arquitetura Evolucionária
02b  - Elemar Jr. - Examinando a Arquitetura Evolucionária02b  - Elemar Jr. - Examinando a Arquitetura Evolucionária
02b - Elemar Jr. - Examinando a Arquitetura EvolucionáriaDNAD
 
04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)DNAD
 
01 - Giovanni Bassi - Keynote
01 - Giovanni Bassi - Keynote01 - Giovanni Bassi - Keynote
01 - Giovanni Bassi - KeynoteDNAD
 

Mais de DNAD (14)

LT 07 - Glauber de Almeida - DRY
LT 07 - Glauber de Almeida - DRYLT 07 - Glauber de Almeida - DRY
LT 07 - Glauber de Almeida - DRY
 
LT 06 - Douglas Aguiar - Quem nao se comunica se trumbica
LT 06 - Douglas Aguiar - Quem nao se comunica se trumbicaLT 06 - Douglas Aguiar - Quem nao se comunica se trumbica
LT 06 - Douglas Aguiar - Quem nao se comunica se trumbica
 
LT 02 - Rodrigo Kumpera - Rodando c sharp
LT 02 - Rodrigo Kumpera - Rodando c sharpLT 02 - Rodrigo Kumpera - Rodando c sharp
LT 02 - Rodrigo Kumpera - Rodando c sharp
 
LT 01 - Rodrigo Yoshima - Business vsarchitecture
LT 01 - Rodrigo Yoshima - Business vsarchitectureLT 01 - Rodrigo Yoshima - Business vsarchitecture
LT 01 - Rodrigo Yoshima - Business vsarchitecture
 
LT 04 - Denis Ferrari - Como lidar com as dificuldades da primeira sprint - dnad
LT 04 - Denis Ferrari - Como lidar com as dificuldades da primeira sprint - dnadLT 04 - Denis Ferrari - Como lidar com as dificuldades da primeira sprint - dnad
LT 04 - Denis Ferrari - Como lidar com as dificuldades da primeira sprint - dnad
 
02a - Leandro Daniel - Examinando a arquitetura evolucionária
02a -  Leandro Daniel - Examinando a arquitetura evolucionária02a -  Leandro Daniel - Examinando a arquitetura evolucionária
02a - Leandro Daniel - Examinando a arquitetura evolucionária
 
07 - Osvaldo Daibert - Cenários para cache de dados distribuidos
07  - Osvaldo Daibert - Cenários para cache de dados distribuidos07  - Osvaldo Daibert - Cenários para cache de dados distribuidos
07 - Osvaldo Daibert - Cenários para cache de dados distribuidos
 
08 - Otavio Pecego - Arquitetura e nuvem: o que muda?
08 - Otavio Pecego - Arquitetura e nuvem: o que muda?08 - Otavio Pecego - Arquitetura e nuvem: o que muda?
08 - Otavio Pecego - Arquitetura e nuvem: o que muda?
 
06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
 
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
 
02c - Vinicius Quaiato - Over Patternization, YAGNI, KISS
02c - Vinicius Quaiato - Over Patternization, YAGNI, KISS02c - Vinicius Quaiato - Over Patternization, YAGNI, KISS
02c - Vinicius Quaiato - Over Patternization, YAGNI, KISS
 
02b - Elemar Jr. - Examinando a Arquitetura Evolucionária
02b  - Elemar Jr. - Examinando a Arquitetura Evolucionária02b  - Elemar Jr. - Examinando a Arquitetura Evolucionária
02b - Elemar Jr. - Examinando a Arquitetura Evolucionária
 
04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)
 
01 - Giovanni Bassi - Keynote
01 - Giovanni Bassi - Keynote01 - Giovanni Bassi - Keynote
01 - Giovanni Bassi - Keynote
 

Último

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 

Último (20)

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 

LT 08 - Guilherme Silveira - Cache hipermidia

  • 1. Rest in Practice: Hypermedia and Services Guilherme Silveira Wednesday, June 8, 2011
  • 3. @guilhermecaelum guilherme.silveira@caelum.com.br Wednesday, June 8, 2011
  • 4. 11 years, 1992: “Basic” Wednesday, June 8, 2011
  • 5. 2002 guj.com.br 2003 vraptor Wednesday, June 8, 2011
  • 6. 2004 extreme programming 2006 scrum ... Wednesday, June 8, 2011
  • 7. 2009 restfulie http://restfulie.caelumobjects.com/ Wednesday, June 8, 2011
  • 8. 2010 tectura http://www.tectura.com.br Wednesday, June 8, 2011
  • 9. 2004 caelum - daily life www.caelum.com.br Wednesday, June 8, 2011
  • 10. blogs blog.caelum.com.br agilenomundoreal.com.br blog.caelumobjects.com Wednesday, June 8, 2011
  • 12. bank.com calendar.com Wednesday, June 8, 2011
  • 13. bank.com calendar.com travel.com Wednesday, June 8, 2011
  • 14. bank.com calendar.com travel.com company.com Wednesday, June 8, 2011
  • 15. bank.com calendar.com travel.com company.com Wednesday, June 8, 2011
  • 16. what is the future of integration over the web? Wednesday, June 8, 2011
  • 18. Restful Web Services Wednesday, June 8, 2011
  • 19. Restful Web create a saas account Services Wednesday, June 8, 2011
  • 20. Restful Web create a saas account freeze account Services Wednesday, June 8, 2011
  • 21. Restful Web create a saas account freeze account Services reactivate account Wednesday, June 8, 2011
  • 22. Web Restful Services Wednesday, June 8, 2011
  • 23. Web http Restful Services Wednesday, June 8, 2011
  • 24. Web http port 80 Restful Services Wednesday, June 8, 2011
  • 25. Web http port 80 firewall heaven Restful Services Wednesday, June 8, 2011
  • 26. Web Services Restful Wednesday, June 8, 2011
  • 27. Web Services xml, json Restful Wednesday, June 8, 2011
  • 28. Web Services xml, json Restful get, post, ... Wednesday, June 8, 2011
  • 29. unresttrips.com: flight details <?xml version="1.0" encoding="UTF-8" standalum="yes"?> <flight> <information> <from>sao paulo</from> <to>seoul</to> </information>   <value>900.00</value> </flight> Wednesday, June 8, 2011
  • 30. service locator when integrating: coupling++ unrest pay unresttrips.com guilherme Wednesday, June 8, 2011
  • 31. service locator when integrating: coupling++ unrest pay unresttrips.com guilherme Wednesday, June 8, 2011
  • 32. resttrips.com: flight details <?xml version="1.0" encoding="UTF-8" standalum="yes"?> <flight> <information> <from>sao paulo</from> <to>seoul</to> </information>   <value>900.00</value> <link rel="payment" href="http://resttrips.com/payment/custom"/ </flight> Wednesday, June 8, 2011
  • 33. resttrips.com: making the payment flight = Client.at('http://resttrips.com/f/574XR4').get(); confirmation = flight.getLink("payment"). patch(cardInformation, value); Wednesday, June 8, 2011
  • 34. resttrips.com: changing its payment provider <?xml version="1.0" encoding="UTF-8" standalum="yes"?> <flight> <information> <from>sao paulo</from> <to>seoul</to> </information>   <value>900.00</value> <link rel="payment" href="http://paysite.com/custom"/> </flight> Wednesday, June 8, 2011
  • 35. dependency injection when integrating: coupling-- restrips pay resttrips.com guilherme paysite.com Wednesday, June 8, 2011
  • 36. dependency injection when integrating: coupling-- restrips pay resttrips.com guilherme paysite.com Wednesday, June 8, 2011
  • 37. i never travel alone Wednesday, June 8, 2011
  • 38. my friend sergio Wednesday, June 8, 2011
  • 39. resttrips.com: sharing a trip flight = Client.at('http://resttrips.com/f/574XR4').get(); confirmation = flight.getLink("payment"). patch(cardInformation, value/2); // send the payment link to another part of the web flight = Client.at('http://resttrips.com/f/574XR4').get(); confirmation = flight.getLink("payment"). patch(cardInformation, value/2); Wednesday, June 8, 2011
  • 40. resttrips.com: sharing a trip flight = Client.at('http://resttrips.com/f/574XR4').get(); confirmation = flight.getLink("payment"). patch(cardInformation, value/2); // send the payment link to another part of the web flight = Client.at('http://resttrips.com/f/574XR4').get(); confirmation = flight.getLink("payment"). patch(cardInformation, value/2); Wednesday, June 8, 2011
  • 41. resttrips.com: sharing a trip flight = Client.at('http://resttrips.com/f/574XR4').get(); confirmation = flight.getLink("payment"). patch(cardInformation, value/2); // send the payment link to another part of the web flight = Client.at('http://resttrips.com/f/574XR4').get(); confirmation = flight.getLink("payment"). patch(cardInformation, value/2); Wednesday, June 8, 2011
  • 42. calendar: integrating my systems myself = Client.at('http://users.calendar.com') .with(auth).get(); myself.link("calendar").patch(flight.link("self")); Wednesday, June 8, 2011
  • 43. calendar: integrating my systems myself = Client.at('http://users.calendar.com') .with(auth).get(); myself.link("calendar").patch(flight.link("self")); Wednesday, June 8, 2011
  • 44. calendar: more examples me.link("calendar").patch(link_to_birthday_list) me.link("calendar").patch(link_to_hotel_reservation) me.link("calendar").patch(link_to_trip_details) Wednesday, June 8, 2011
  • 46. Any update on the flight ==> reflects here Any update on the hotel ==> reflects here Any update on the meeting ==> reflects here so what? Wednesday, June 8, 2011
  • 47. Any update on the flight ==> reflects here Any update on the hotel ==> reflects here Any update on the meeting ==> reflects here at e! te gr e, in st us so what? ’t j u don Wednesday, June 8, 2011
  • 48. so what? that was just keeping an URI. Wednesday, June 8, 2011
  • 49. so what? that was just keeping an URI. Remove ==> Cancels the flight Remove ==> Cancels the reservation Remove ==> Emails your coworkers Wednesday, June 8, 2011
  • 50. so what? that was just keeping an URI. rol! cont ali ze en tr notc o dRemove==> Cancels the flight Remove ==> Cancels the reservation Remove ==> Emails your coworkers Wednesday, June 8, 2011
  • 51. does our ‘rest’ systems built in 2010 work this way? Wednesday, June 8, 2011
  • 52. so what? that was just keeping an URI. Remove ==> Cancels the flight Remove ==> Cancels the reservation Remove ==> Emails your coworkers Wednesday, June 8, 2011
  • 53. so what? that was just keeping an URI. at? or m h f h ic bu tw Remove ==> Cancels the flight Remove ==> Cancels the reservation Remove ==> Emails your coworkers Wednesday, June 8, 2011
  • 54. #json, #xml, #soap #etc? Wednesday, June 8, 2011
  • 55. which #json, #xml #etc? Wednesday, June 8, 2011
  • 58. so what? micro formats, media types, rdf etc Wednesday, June 8, 2011
  • 59. so what? nk s! er li hyp w i th ats orm f icro m micro formats, media types, rdf etc Wednesday, June 8, 2011
  • 60. integration over the web Wednesday, June 8, 2011
  • 62. bottom up design by committe mime type? microformat controlled vocabulary Wednesday, June 8, 2011
  • 63. hypermedia integration over the web Wednesday, June 8, 2011
  • 64. guilherme.silveira@caelum.com.br http://www.caelumobjects.com obrigado @guilhermecaelum Wednesday, June 8, 2011