SlideShare ist ein Scribd-Unternehmen logo
1 von 64
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
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
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
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
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 

Kürzlich hochgeladen (20)

My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
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)
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
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
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 

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