A Babel Fish from the Swamp of POX API Days Mediterranea Ross Garrett [email protected] @gssor May 6th, 2015 © 2015 Axway | @gssor 1 A Babel Fish? © 2015 Axway | @gssor 2 A Babel Fish? © 2015 Axway | @gssor 3 A Swamp of POX? h"p://mar)nfowler.com/ar)cles/richardsonMaturityModel.html © 2015 Axway | @gssor 4 Why are we here? © 2015 Axway | @gssor 5 The Web “We propose the implementation of a simple scheme to incorporate several different servers of machine-stored information already available.” - Berners-Lee / Cailliau, 1990 © 2015 Axway | @gssor 6 The Web “… web of nodes in which the user can browse at will.” - Berners-Lee / Cailliau, 1990 © 2015 Axway | @gssor 7 HTTP… © 2015 Axway | @gssor 8 Tell me what HTTP is? © 2015 Axway | @gssor 9 Tell me what HTTP is? Hypertext Transfer Protocol © 2015 Axway | @gssor 10 Tell me what HTTP is? How-To-Transfer Protocol ???? © 2015 Axway | @gssor 11 HYPERTEXT © 2015 Axway | @gssor 12 Hypertext Ted Nelson coins the word “Hypertext in A File Structure for the Complex, the Changing, and the Indeterminate” 20th National Conference, New York, Association for Computing Machinery, 1965. © 2015 Axway | @gssor 13 Hypertext Hypertext is text which contains links to other texts. © 2015 Axway | @gssor 14 And by extension… HyperMedia is a term used for hypertext which is not constrained to be text © 2015 Axway | @gssor 15 Consider a Web Application http://www.facebook.com © 2015 Axway | @gssor 16 The Web is more than just HTTP © 2015 Axway | @gssor 17 The Web is more than just HTTP • HTTP • URI • HTML We need to use ALL of the Web © 2015 Axway | @gssor 18 But have we forgotten this in a World of APIs? © 2015 Axway | @gssor 19 How-To-Transfer Protocol © 2015 Axway | @gssor 20 The Web © 2015 Axway | @gssor 21 A Reminder © 2015 Axway | @gssor 22 From the beginning then… © 2015 Axway | Confidential © 2015 Axway | @gssor 23 The Swamp of POX h"p://mar)nfowler.com/ar)cles/richardsonMaturityModel.html © 2015 Axway | @gssor 24 A example POX API h"p://blog.sgo.to/2014/04/what-‐your-‐api-‐would-‐look-‐like-‐as-‐webpage.html © 2015 Axway | @gssor 25 Looking at this as a Web Page h"p://blog.sgo.to/2014/04/what-‐your-‐api-‐would-‐look-‐like-‐as-‐webpage.html © 2015 Axway | @gssor 26 Looking at this as a Web Page h"p://blog.sgo.to/2014/04/what-‐your-‐api-‐would-‐look-‐like-‐as-‐webpage.html © 2015 Axway | @gssor 27 Level 1 - Resources h"p://mar)nfowler.com/ar)cles/richardsonMaturityModel.html © 2015 Axway | @gssor 28 An example Level 1 API h"p://blog.sgo.to/2014/04/what-‐your-‐api-‐would-‐look-‐like-‐as-‐webpage.html © 2015 Axway | @gssor 29 Looking at this as a Web Page h"p://blog.sgo.to/2014/04/what-‐your-‐api-‐would-‐look-‐like-‐as-‐webpage.html © 2015 Axway | @gssor 30 Looking at this as a Web Page h"p://blog.sgo.to/2014/04/what-‐your-‐api-‐would-‐look-‐like-‐as-‐webpage.html © 2015 Axway | @gssor 31 Looking at this as a Web Page h"p://blog.sgo.to/2014/04/what-‐your-‐api-‐would-‐look-‐like-‐as-‐webpage.html © 2015 Axway | @gssor 32 Looking at this as a Web Page h"p://blog.sgo.to/2014/04/what-‐your-‐api-‐would-‐look-‐like-‐as-‐webpage.html © 2015 Axway | @gssor 33 Level 2 - HTTP Verbs h"p://mar)nfowler.com/ar)cles/richardsonMaturityModel.html © 2015 Axway | @gssor 34 An example Level 2 API h"p://blog.sgo.to/2014/04/what-‐your-‐api-‐would-‐look-‐like-‐as-‐webpage.html © 2015 Axway | @gssor 35 Looking at this as a Web Page h"p://blog.sgo.to/2014/04/what-‐your-‐api-‐would-‐look-‐like-‐as-‐webpage.html © 2015 Axway | @gssor 36 Looking at this as a Web Page h"p://blog.sgo.to/2014/04/what-‐your-‐api-‐would-‐look-‐like-‐as-‐webpage.html © 2015 Axway | @gssor 37 Level 3 – Hypermedia Controls h"p://mar)nfowler.com/ar)cles/richardsonMaturityModel.html © 2015 Axway | @gssor 38 An example Level 3 API h"p://blog.sgo.to/2014/04/what-‐your-‐api-‐would-‐look-‐like-‐as-‐webpage.html © 2015 Axway | @gssor 39 Looking at this as a Web Page h"p://blog.sgo.to/2014/04/what-‐your-‐api-‐would-‐look-‐like-‐as-‐webpage.html © 2015 Axway | @gssor 40 Looking at this as a Web Page h"p://blog.sgo.to/2014/04/what-‐your-‐api-‐would-‐look-‐like-‐as-‐webpage.html © 2015 Axway | @gssor 41 Using ALL of the Web • Level 1 – tackles the question of handling complexity by using divide and conquer, breaking a large service endpoint down into multiple resources. • Level 2 – introduces a standard set of verbs so that we handle similar situations in the same way, removing unnecessary variation. • Level 3 – introduces discoverability, providing a way of making a protocol more self-documenting. © 2015 Axway | @gssor 42 Points to Note • XML is not the only way a resource can be represented • The choice of representation is left to the implementation • But remember the difference between Hypermedia formats and static formats – HTML vs. TXT © 2015 Axway | @gssor 43 In Summary • Following principles of the Web – Scalable – Recoverable – Fault-Tolerable – Secure – Loosely Coupled These are the same requirements we have for soHware systems © 2015 Axway | @gssor 44 Level 3 REST supports these requirements by using ALL of the Web © 2015 Axway | @gssor 45 Thank You! Ross Garrett [email protected] @gssor © 2015 Axway | @gssor 46
© Copyright 2024