SlideShare a Scribd company logo
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

More Related Content

Similar to LT 08 - Guilherme Silveira - Cache hipermidia

iPhone Python love affair
iPhone Python love affairiPhone Python love affair
iPhone Python love affair
Anna Callahan
 
Sinsai.info と Crisis Mapping
Sinsai.info と Crisis Mapping Sinsai.info と Crisis Mapping
Sinsai.info と Crisis Mapping
Hal Seki
 
Mobility in the financial industry
Mobility in the financial industryMobility in the financial industry
Mobility in the financial industry
Vincent Everts
 
Choosing the right Content Management System
Choosing the right Content Management SystemChoosing the right Content Management System
Choosing the right Content Management System
Rachel 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 apps
Evil Martians
 
YOU WILL REGRET THIS
YOU WILL REGRET THISYOU WILL REGRET THIS
YOU WILL REGRET THIS
MononcQc
 
Messaging patterns
Messaging patternsMessaging patterns
Messaging patterns
Alvaro Videla
 
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
Tim Wright
 
Opera Mobile HTML5 CSS3 Standards
Opera Mobile HTML5 CSS3 StandardsOpera Mobile HTML5 CSS3 Standards
Opera Mobile HTML5 CSS3 Standards
Zi Bin Cheah
 
Hack Your Life: Winter College 2012
Hack Your Life: Winter College 2012Hack Your Life: Winter College 2012
Hack Your Life: Winter College 2012
Miami 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 NodeJS
Sylvain 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 Online
Karina Rocha
 
Super Awesome Interactions with jQuery
Super Awesome Interactions with jQuerySuper Awesome Interactions with jQuery
Super Awesome Interactions with jQuery
ZURB
 
Consumer behavior and mobile payments for tech map amsterdam
Consumer behavior and mobile payments for tech map amsterdamConsumer behavior and mobile payments for tech map amsterdam
Consumer behavior and mobile payments for tech map amsterdam
Steven Zwerink
 

Similar to LT 08 - Guilherme Silveira - Cache hipermidia (14)

iPhone Python love affair
iPhone Python love affairiPhone Python love affair
iPhone Python love affair
 
Sinsai.info と Crisis Mapping
Sinsai.info と Crisis Mapping Sinsai.info と Crisis Mapping
Sinsai.info と Crisis Mapping
 
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
 
Consumer behavior and mobile payments for tech map amsterdam
Consumer behavior and mobile payments for tech map amsterdamConsumer behavior and mobile payments for tech map amsterdam
Consumer behavior and mobile payments for tech map amsterdam
 

More from DNAD

LT 07 - Glauber de Almeida - DRY
LT 07 - Glauber de Almeida - DRYLT 07 - Glauber de Almeida - DRY
LT 07 - Glauber de Almeida - DRY
DNAD
 
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
DNAD
 
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
DNAD
 
LT 01 - Rodrigo Yoshima - Business vsarchitecture
LT 01 - Rodrigo Yoshima - Business vsarchitectureLT 01 - Rodrigo Yoshima - Business vsarchitecture
LT 01 - Rodrigo Yoshima - Business vsarchitecture
DNAD
 
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
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
DNAD
 
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
DNAD
 
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, DDDD
DNAD
 
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
DNAD
 
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
DNAD
 
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
DNAD
 
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 - Keynote
DNAD
 

More from 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
 

Recently uploaded

Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
Federico Razzoli
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 

Recently uploaded (20)

Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 

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