SlideShare a Scribd company logo
1 of 42
Download to read offline
A bit of REST (Representational State Transfer)
Roy T. Fielding | Senior Principal Scientist, Adobe
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Warning
2
Ph.D. Dissertation

REST
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Why talk about REST?
3
What is REST Anyway?
Copyright © 2012, ZapThink, a Dovèl Technologies Company
• Representational State
Transfer (REST) is a style of
software architecture for
distributed hypermedia
systems such as the
World Wide Web
• Roy Fielding
looked at the Web
and saw that it was good
BUZZWORD
Because
has become a
There’s nothing particularly wrong with that…
unless you happen to be me…
or working with me
Jun 93 Dec 93 Jun 94 Dec 94 Jun 95
130
623
2,738
10,022
23,517
Public WWW servers [Matthew Gray]
© 2015 Adobe Systems Incorporated. All Rights Reserved.
A bit of context: REST also began 20 years ago
4
Jun 93 Dec 93 Jun 94 Dec 94 Jun 95
130
623
2,738
Public WWW servers [Matthew Gray]
Using XMosaic
www.ics.uci.edu
wwwstat
MOMspider
Conditional GET
1st WWW
Relative URLs
HTML 2.0
2nd WWW
libwww-perl
© 2015 Adobe Systems Incorporated. All Rights Reserved.
A bit of context: REST also began 20 years ago
4
Jun 93 Dec 93 Jun 94 Dec 94 Jun 95
Public WWW servers [Matthew Gray]
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Am I going to talk about ColdFusion's implementation of REST APIs and API Management?
6
REST

is NOT an

implementation
No,
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Three (very different) perspectives of the Web
7
Information
http://www.w3.org/TR/html4/
4/2/08 12:09 AM
next table of contents elements attributes index
HTML 4.01 Specification
W3C Recommendation 24 December 1999
This version:
http://www.w3.org/TR/1999/REC-html401-19991224
(plain text [794Kb], gzip'ed tar archive of HTML files [371Kb], a .zip archive of HTML files
[405Kb], gzip'ed Postscript file [746Kb, 389 pages], gzip'ed PDF file [963Kb])
Latest version of HTML 4.01:
http://www.w3.org/TR/html401
Latest version of HTML 4:
http://www.w3.org/TR/html4
Latest version of HTML:
http://www.w3.org/TR/html
Previous version of HTML 4.01:
http://www.w3.org/TR/1999/PR-html40-19990824
Previous HTML 4 Recommendation:
http://www.w3.org/TR/1998/REC-html40-19980424
Editors:
Dave Raggett <dsr@w3.org>
Arnaud Le Hors, W3C
Ian Jacobs, W3C
Copyright ©1997-1999 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use
and software licensing rules apply.
Abstract
This specification defines the HyperText Markup Language (HTML), the publishing language of the
World Wide Web. This specification defines HTML 4.01, which is a subversion of HTML 4. In addition
to the text, multimedia, and hyperlink features of the previous versions of HTML (HTML 3.2 [HTML32]
and HTML 2.0 [RFC1866]), HTML 4 supports more multimedia options, scripting languages, style
sheets, better printing facilities, and documents that are more accessible to users with disabilities.
HTML 4 also takes great strides towards the internationalization of documents, with the goal of making
the Web truly World Wide.
HTML 4 is an SGML application conforming to International Standard ISO 8879 -- Standard
Generalized Markup Language [ISO8879].
Status of this document
This section describes the status of this document at the time of its publication. Other documents may
supersede this document. The latest status of this document series is maintained at the W3C.
Fielding, et al Standards Track [Page 1]
Network Working Group R. Fielding
Request for Comments: 2068 UC Irvine
Category: Standards Track J. Gettys
J. C. Mogul
DEC
H. Frystyk
T. Berners-Lee
MIT/LCS
January 1997
Hypertext Transfer Protocol -- HTTP/1.1
Status of this Memo
This document specifies an Internet standards track protocol for the Internet community, and requests
discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official
Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this
memo is unlimited.
Abstract
The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative,
hypermedia information systems. It is a generic, stateless, object-oriented protocol which can be used for
many tasks, such as name servers and distributed object management systems, through extension of its
request methods. A feature of HTTP is the typing and negotiation of data representation, allowing systems
to be built independently of the data being transferred.
HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification
defines the protocol referred to as “HTTP/1.1”.
file://localhost/Users/fielding/ws/labs-webarch/uri/rfc/rfc3986.html
4/2/08 12:16 AM
Network Working Group T. Berners-Lee
Request for Comments: 3986 W3C/MIT
Obsoletes: 2732, 2396, 1808 R. Fielding
STD: 66 Day Software
Updates: 1738 L. Masinter
Category: Standards Track Adobe Systems
January 2005
Uniform Resource Identifier (URI):
Generic Syntax
Status of this Memo
This document specifies an Internet standards track protocol for the Internet community,
and requests discussion and suggestions for improvements. Please refer to the current
edition of the “Internet Official Protocol Standards” (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright © The Internet Society (2005). All Rights Reserved.
Abstract
A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an
abstract or physical resource. This specification defines the generic URI syntax and a
process for resolving URI references that might be in relative form, along with guidelines
and security considerations for the use of URIs on the Internet. The URI syntax defines a
grammar that is a superset of all valid URIs, allowing an implementation to parse the
common components of a URI reference without knowing the scheme-specific
requirements of every possible identifier. This specification does not define a generative
grammar for URIs; that task is performed by the individual specifications of each URI
scheme.
ProtocolsBrowsers
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Web Implementation (user view)
8
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Web Implementation (origin view)
9
Application Servers

Dynamic Content
Centralized Data
RDBMS, NFS, SAN
Webservers/Gateways

Accelerator Cache
User Agents
Intermediary

Proxy Cache
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Web Architecture
10
$
$
$
$
$
$
$
$User Agents
Proxies Gateways Origin Servers
Architecture is a vertical abstraction on implementation
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Web Architecture
11
http://www.w3.org/TR/html4/
4/2/08 12:09 AM
next table of contents elements attributes index
HTML 4.01 Specification
W3C Recommendation 24 December 1999
This version:
http://www.w3.org/TR/1999/REC-html401-19991224
(plain text [794Kb], gzip'ed tar archive of HTML files [371Kb], a .zip archive of HTML files
[405Kb], gzip'ed Postscript file [746Kb, 389 pages], gzip'ed PDF file [963Kb])
Latest version of HTML 4.01:
http://www.w3.org/TR/html401
Latest version of HTML 4:
http://www.w3.org/TR/html4
Latest version of HTML:
http://www.w3.org/TR/html
Previous version of HTML 4.01:
http://www.w3.org/TR/1999/PR-html40-19990824
Previous HTML 4 Recommendation:
http://www.w3.org/TR/1998/REC-html40-19980424
Editors:
Dave Raggett <dsr@w3.org>
Arnaud Le Hors, W3C
Ian Jacobs, W3C
Copyright ©1997-1999 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use
and software licensing rules apply.
Abstract
This specification defines the HyperText Markup Language (HTML), the publishing language of the
World Wide Web. This specification defines HTML 4.01, which is a subversion of HTML 4. In addition
to the text, multimedia, and hyperlink features of the previous versions of HTML (HTML 3.2 [HTML32]
and HTML 2.0 [RFC1866]), HTML 4 supports more multimedia options, scripting languages, style
sheets, better printing facilities, and documents that are more accessible to users with disabilities.
HTML 4 also takes great strides towards the internationalization of documents, with the goal of making
the Web truly World Wide.
HTML 4 is an SGML application conforming to International Standard ISO 8879 -- Standard
Generalized Markup Language [ISO8879].
Status of this document
This section describes the status of this document at the time of its publication. Other documents may
supersede this document. The latest status of this document series is maintained at the W3C.
Fielding, et al Standards Track [Page 1]
Network Working Group R. Fielding
Request for Comments: 2068 UC Irvine
Category: Standards Track J. Gettys
J. C. Mogul
DEC
H. Frystyk
T. Berners-Lee
MIT/LCS
January 1997
Hypertext Transfer Protocol -- HTTP/1.1
Status of this Memo
This document specifies an Internet standards track protocol for the Internet community, and requests
discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official
Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this
memo is unlimited.
Abstract
The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative,
hypermedia information systems. It is a generic, stateless, object-oriented protocol which can be used for
many tasks, such as name servers and distributed object management systems, through extension of its
request methods. A feature of HTTP is the typing and negotiation of data representation, allowing systems
to be built independently of the data being transferred.
HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification
defines the protocol referred to as “HTTP/1.1”.
file://localhost/Users/fielding/ws/labs-webarch/uri/rfc/rfc3986.html
4/2/08 12:16 AM
Network Working Group T. Berners-Lee
Request for Comments: 3986 W3C/MIT
Obsoletes: 2732, 2396, 1808 R. Fielding
STD: 66 Day Software
Updates: 1738 L. Masinter
Category: Standards Track Adobe Systems
January 2005
Uniform Resource Identifier (URI):
Generic Syntax
Status of this Memo
This document specifies an Internet standards track protocol for the Internet community,
and requests discussion and suggestions for improvements. Please refer to the current
edition of the “Internet Official Protocol Standards” (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright © The Internet Society (2005). All Rights Reserved.
Abstract
A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an
abstract or physical resource. This specification defines the generic URI syntax and a
process for resolving URI references that might be in relative form, along with guidelines
and security considerations for the use of URIs on the Internet. The URI syntax defines a
grammar that is a superset of all valid URIs, allowing an implementation to parse the
common components of a URI reference without knowing the scheme-specific
requirements of every possible identifier. This specification does not define a generative
grammar for URIs; that task is performed by the individual specifications of each URI
scheme.
Protocols
Web protocols define that vertical abstraction on implementation
© 2015 Adobe Systems Incorporated. All Rights Reserved.
So, is REST the Web Architecture?
12
REST

is NOT an

architecture!
No,
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Original proposal for the World Wide Web
13
This
document
"Hypertext"
Linked
information
Hypermedia
CERNDOC
ENQUIRE
Tim
Berners-Lee
section
group
C.E.R.N
wrote
division
Hierarchical
systems
for example
for example
describes
includes
for example
A
Proposal
"Mesh"
Hyper
Card uucp
News
IBM
GroupTalk
VAX/
NOTES
Computer
conferencing
describes
includes
includes
Comms
ACM
describes
refers
to
describes
etc
group
unifies
[Berners-Lee, 1989]
Linked
information
CERNDOC
ENQUIRE
Hierarchical
systems
for example
for examplefor example
A
Proposal
"Mesh"
Hyper
Card uucp
News
IBM
GroupTalk
VAX/
NOTES
Computer
conferencing
describes
unifies
© 2015 Adobe Systems Incorporated. All Rights Reserved.
The Web is an application integration system
14
[Berners-Lee, 1989]
Linked
information
CERNDOC
ENQUIRE
Hierarchical
systems
for example
for examplefor example
A
Proposal
"Mesh"
Hyper
Card uucp
News
IBM
GroupTalk
VAX/
NOTES
Computer
conferencing
describes
unifies
© 2015 Adobe Systems Incorporated. All Rights Reserved.
The Web is an application integration system
14
[Berners-Lee, 1989]
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Network-based Applications
• Application
§ short for “applying a computer to accomplish a given purpose”
§ examples: finding a document, managing a bank account, or buying a travel ticket

• Network-based
§ operating over the network with full knowledge of the user
§ i.e., unlike distributed, which intentionally hides the network
15
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Architectural Styles
§A horizontal abstraction across multiple architectures (vertical abstractions)
§ names a repeated architectural pattern
§ defined by its design constraints
§ chosen for the properties they induce
§ REST is an architectural style
§ for network-based applications
§ to induce a specific set of architectural properties
§ desired for the World Wide Web
16
Ionic Order
© 2015 Adobe Systems Incorporated. All Rights Reserved.
REST is an accumulation of design constraints that induce architectural properties
17
Figure 5-9. REST Derivation by Style Constraints
RR CS LS VM U
CSS LCS COD$
C$SS LC$SS LCODC$SS REST
replicated
on-demand
separated
layered
mobile
uniform interface
stateless
shared
intermediate
processing
cacheable
extensible
simple
reusable
scalable
reliable
multi-
org.
visible
programmable
© 2015 Adobe Systems Incorporated. All Rights Reserved.
REST is an accumulation of design constraints that induce architectural properties
17
Figure 5-9. REST Derivation by Style Constraints
RR CS LS VM U
CSS LCS COD$
C$SS LC$SS LCODC$SS REST
replicated
on-demand
separated
layered
mobile
uniform interface
stateless
shared
intermediate
processing
cacheable
extensible
simple
reusable
scalable
reliable
multi-
org.
visible
programmable
Constraint
© 2015 Adobe Systems Incorporated. All Rights Reserved.
REST is an accumulation of design constraints that induce architectural properties
17
Figure 5-9. REST Derivation by Style Constraints
RR CS LS VM U
CSS LCS COD$
C$SS LC$SS LCODC$SS REST
replicated
on-demand
separated
layered
mobile
uniform interface
stateless
shared
intermediate
processing
cacheable
extensible
simple
reusable
scalable
reliable
multi-
org.
visible
programmable
Property
[photobydhester:http://mrg.bz/xVLmr1]
[photobyEmmiP:http://mrg.bz/P7BJRi]
[photobyrupertjefferies:http://mrg.bz/Y9XThf]
© 2015 Adobe Systems Incorporated. All Rights Reserved.
REST’s Five Uniform Interface Constraints
§All important resources are identified by one resource identifier mechanism
§ induces simple, visible, reusable, stateless communication
§Access methods have the same semantics for all resources
§ induces visible, scalable, available through layered system, cacheable, and shared caches
§Resources are manipulated through the exchange of representations
§ induces simple, visible, reusable, cacheable, and evolvable (information hiding)
§Representations are exchanged via self-descriptive messages
§ induces visible, scalable, available through layered system, cacheable, and shared caches
§ induces evolvable via extensible communication
§Hypertext as the engine of application state
§ induces simple, visible, reusable, and cacheable through data-oriented integration
§ induces evolvable (loose coupling) via late binding of application transitions
21
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Why the hypermedia constraint?
Hypertext as the Engine of Application State


each state can be dynamic

each transition can be redirected
22
S0 S2S1 S3
R o y
*
*
© 2015 Adobe Systems Incorporated. All Rights Reserved.
The client only needs to know one state and its transitions!
Follow Your Nose
23
S0 SS1 SR o y
*
*
© 2015 Adobe Systems Incorporated. All Rights Reserved.
The client only needs to know one state and its transitions!
Follow Your Nose
24
S0 S2S1 SR o y
*
*
© 2015 Adobe Systems Incorporated. All Rights Reserved.
The client only needs to know one state and its transitions!
Follow Your Nose
25
S0 S2S S3
R o y
*
*
© 2015 Adobe Systems Incorporated. All Rights Reserved.
The client only needs to know one state and its transitions!
Follow Your Nose
26
S SS S3
R o y
*
*
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Know Your Audience
REST

emphasizes evolvability
to sustain an uncontrollable system
If you think you have control over the system
or aren’t interested in evolvability,
don’t waste your time arguing about REST
27
© 2015 Adobe Systems Incorporated. All Rights Reserved.
What is the most common question about REST?
28
REST

API?
So, where is your …
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Sorry, it's not that simple
An API that

provides network-based access to resources

via a uniform interface of self-descriptive messages

containing hypertext to indicate potential state transitions

might

be part of an overall system that is

a RESTful application
29
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Some tips for building an API for RESTful applications
§Identify all of the resources
§ few resources are atomic; most are collections or views of other resources
§ don't confuse identity (naming) with containment (storage)
§ use access control, not obscurity, to control publication
§ resources have more in common with stored procedures than they do with records or files
§Iteratively develop resources and state transitions (use cases)
§ don't try to do everything at once
§ don't make any assumptions about received content, order, versioning, etc.
§Be flexible regarding media types and access protocols
§ start by prototyping in HTML and exploring with browsers and spiders
§ if you need to publish JSON, use a profile that defines hypertext semantics
§ use relative URLs wherever possible (to save space and improve portability)
30
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Don’t over-think the problem space
a RESTful API is just a website

for users with a limited vocabulary

(machine to machine interaction)
31
© 2015 Adobe Systems Incorporated. All Rights Reserved.
Don’t under-think the problem space
building a good website

is not easy

(but it has been done before)
32
© 2015 Adobe Systems Incorporated. All Rights Reserved.
So, what does that mean for ColdFusion?
Why are we using an API designed by Sun/Oracle

to build a website?
33
© 2015 Adobe Systems Incorporated. All Rights Reserved.
So, what does that mean for ColdFusion?
Why are we using an API designed by Sun/Oracle

to build a website?
Wouldn't it be better to use

a language for rapid application development

that could automatically select its output serialization

to match the media type in which it is embedded?
33
© 2015 Adobe Systems Incorporated. All Rights Reserved.

More Related Content

What's hot

Migration to ColdFusion 11 – making it seamless and easy anit
Migration to ColdFusion 11 – making it seamless and easy   anitMigration to ColdFusion 11 – making it seamless and easy   anit
Migration to ColdFusion 11 – making it seamless and easy anitColdFusionConference
 
Intro to Coldfusion
Intro to ColdfusionIntro to Coldfusion
Intro to ColdfusionTerry Ryan
 
Browser tools that make web development easier
Browser tools that make web development easierBrowser tools that make web development easier
Browser tools that make web development easierAlan Seiden
 
Mobile Applications Made Easy with ColdFusion 11
Mobile Applications Made Easy with ColdFusion 11Mobile Applications Made Easy with ColdFusion 11
Mobile Applications Made Easy with ColdFusion 11ColdFusionConference
 
From Zero to ZF: Your first zend framework project on ibm i
From Zero to ZF: Your first zend framework project on ibm iFrom Zero to ZF: Your first zend framework project on ibm i
From Zero to ZF: Your first zend framework project on ibm iAlan Seiden
 
Rest api design by george reese
Rest api design by george reeseRest api design by george reese
Rest api design by george reesebuildacloud
 
Web services on IBM i with PHP and Zend Framework
Web services on IBM i with PHP and Zend FrameworkWeb services on IBM i with PHP and Zend Framework
Web services on IBM i with PHP and Zend FrameworkAlan Seiden
 
IBM i: Fertile Ground for PHP Developers
IBM i: Fertile Ground for PHP DevelopersIBM i: Fertile Ground for PHP Developers
IBM i: Fertile Ground for PHP DevelopersAlan Seiden
 
ITB2016 - Building ColdFusion RESTFul Services
ITB2016 - Building ColdFusion RESTFul ServicesITB2016 - Building ColdFusion RESTFul Services
ITB2016 - Building ColdFusion RESTFul ServicesOrtus Solutions, Corp
 
BP-7 Share Customization Best Practices
BP-7 Share Customization Best PracticesBP-7 Share Customization Best Practices
BP-7 Share Customization Best PracticesAlfresco Software
 

What's hot (20)

Migration to ColdFusion 11 – making it seamless and easy anit
Migration to ColdFusion 11 – making it seamless and easy   anitMigration to ColdFusion 11 – making it seamless and easy   anit
Migration to ColdFusion 11 – making it seamless and easy anit
 
Require js training
Require js trainingRequire js training
Require js training
 
Intro to Coldfusion
Intro to ColdfusionIntro to Coldfusion
Intro to Coldfusion
 
Browser tools that make web development easier
Browser tools that make web development easierBrowser tools that make web development easier
Browser tools that make web development easier
 
REST in AEM
REST in AEMREST in AEM
REST in AEM
 
Mobile Applications Made Easy with ColdFusion 11
Mobile Applications Made Easy with ColdFusion 11Mobile Applications Made Easy with ColdFusion 11
Mobile Applications Made Easy with ColdFusion 11
 
Hidden Gems in ColdFusion 2016
Hidden Gems in ColdFusion 2016Hidden Gems in ColdFusion 2016
Hidden Gems in ColdFusion 2016
 
Bring api manager into your stack
Bring api manager into your stackBring api manager into your stack
Bring api manager into your stack
 
ColdFusion builder plugins
ColdFusion builder pluginsColdFusion builder plugins
ColdFusion builder plugins
 
Securing applications
Securing applicationsSecuring applications
Securing applications
 
Command box
Command boxCommand box
Command box
 
From Zero to ZF: Your first zend framework project on ibm i
From Zero to ZF: Your first zend framework project on ibm iFrom Zero to ZF: Your first zend framework project on ibm i
From Zero to ZF: Your first zend framework project on ibm i
 
Api manager preconference
Api manager preconferenceApi manager preconference
Api manager preconference
 
Rest api design by george reese
Rest api design by george reeseRest api design by george reese
Rest api design by george reese
 
Getting started with PHP on IBM i
Getting started with PHP on IBM iGetting started with PHP on IBM i
Getting started with PHP on IBM i
 
Web services on IBM i with PHP and Zend Framework
Web services on IBM i with PHP and Zend FrameworkWeb services on IBM i with PHP and Zend Framework
Web services on IBM i with PHP and Zend Framework
 
IBM i: Fertile Ground for PHP Developers
IBM i: Fertile Ground for PHP DevelopersIBM i: Fertile Ground for PHP Developers
IBM i: Fertile Ground for PHP Developers
 
ITB2016 - Building ColdFusion RESTFul Services
ITB2016 - Building ColdFusion RESTFul ServicesITB2016 - Building ColdFusion RESTFul Services
ITB2016 - Building ColdFusion RESTFul Services
 
Cfml features modern_coding
Cfml features modern_codingCfml features modern_coding
Cfml features modern_coding
 
BP-7 Share Customization Best Practices
BP-7 Share Customization Best PracticesBP-7 Share Customization Best Practices
BP-7 Share Customization Best Practices
 

Viewers also liked

How do I Write Testable Javascript so I can Test my CF API on Server and Client
How do I Write Testable Javascript so I can Test my CF API on Server and ClientHow do I Write Testable Javascript so I can Test my CF API on Server and Client
How do I Write Testable Javascript so I can Test my CF API on Server and ClientColdFusionConference
 
Hack & Fix, Hands on ColdFusion Security Training
Hack & Fix, Hands on ColdFusion Security TrainingHack & Fix, Hands on ColdFusion Security Training
Hack & Fix, Hands on ColdFusion Security TrainingColdFusionConference
 
Innbokskontroll - COWI Stavanger 8.november 2016
Innbokskontroll - COWI Stavanger 8.november 2016Innbokskontroll - COWI Stavanger 8.november 2016
Innbokskontroll - COWI Stavanger 8.november 2016Jørn Kippersund
 
Pruba de ensayo 2do bimestre
Pruba de ensayo 2do bimestrePruba de ensayo 2do bimestre
Pruba de ensayo 2do bimestreMaría Rodríguez
 
ACEnews_Jul-Aug 2007 MSherer Article
ACEnews_Jul-Aug 2007 MSherer ArticleACEnews_Jul-Aug 2007 MSherer Article
ACEnews_Jul-Aug 2007 MSherer ArticleMatt Sherer
 
Protein synthesis, by chance blair
Protein synthesis, by chance blairProtein synthesis, by chance blair
Protein synthesis, by chance blairpunxsyscience
 
301378156 design-of-sram-in-verilog
301378156 design-of-sram-in-verilog301378156 design-of-sram-in-verilog
301378156 design-of-sram-in-verilogSrinivas Naidu
 
Hacking Marketing with Scott Brinker
Hacking Marketing with Scott BrinkerHacking Marketing with Scott Brinker
Hacking Marketing with Scott BrinkerEpiserver
 
The State of Multichnanel Marketing
The State of Multichnanel MarketingThe State of Multichnanel Marketing
The State of Multichnanel MarketingEpiserver
 
ENJ-3-200 Derechos de los Niños, Niñas y Adolescentes
ENJ-3-200 Derechos de los Niños, Niñas y AdolescentesENJ-3-200 Derechos de los Niños, Niñas y Adolescentes
ENJ-3-200 Derechos de los Niños, Niñas y AdolescentesENJ
 
Adolescentes y nuevas tecnologías. Peligros ocultos.
Adolescentes y nuevas tecnologías. Peligros ocultos.Adolescentes y nuevas tecnologías. Peligros ocultos.
Adolescentes y nuevas tecnologías. Peligros ocultos.Juan Llamazares
 
Our application got popular and now it breaks
Our application got popular and now it breaksOur application got popular and now it breaks
Our application got popular and now it breaksColdFusionConference
 

Viewers also liked (20)

How do I Write Testable Javascript so I can Test my CF API on Server and Client
How do I Write Testable Javascript so I can Test my CF API on Server and ClientHow do I Write Testable Javascript so I can Test my CF API on Server and Client
How do I Write Testable Javascript so I can Test my CF API on Server and Client
 
Hack & Fix, Hands on ColdFusion Security Training
Hack & Fix, Hands on ColdFusion Security TrainingHack & Fix, Hands on ColdFusion Security Training
Hack & Fix, Hands on ColdFusion Security Training
 
flyer conference
flyer conferenceflyer conference
flyer conference
 
Innbokskontroll - COWI Stavanger 8.november 2016
Innbokskontroll - COWI Stavanger 8.november 2016Innbokskontroll - COWI Stavanger 8.november 2016
Innbokskontroll - COWI Stavanger 8.november 2016
 
Pruba de ensayo 2do bimestre
Pruba de ensayo 2do bimestrePruba de ensayo 2do bimestre
Pruba de ensayo 2do bimestre
 
ACEnews_Jul-Aug 2007 MSherer Article
ACEnews_Jul-Aug 2007 MSherer ArticleACEnews_Jul-Aug 2007 MSherer Article
ACEnews_Jul-Aug 2007 MSherer Article
 
Protein synthesis, by chance blair
Protein synthesis, by chance blairProtein synthesis, by chance blair
Protein synthesis, by chance blair
 
301378156 design-of-sram-in-verilog
301378156 design-of-sram-in-verilog301378156 design-of-sram-in-verilog
301378156 design-of-sram-in-verilog
 
Hacking Marketing with Scott Brinker
Hacking Marketing with Scott BrinkerHacking Marketing with Scott Brinker
Hacking Marketing with Scott Brinker
 
The State of Multichnanel Marketing
The State of Multichnanel MarketingThe State of Multichnanel Marketing
The State of Multichnanel Marketing
 
ENJ-3-200 Derechos de los Niños, Niñas y Adolescentes
ENJ-3-200 Derechos de los Niños, Niñas y AdolescentesENJ-3-200 Derechos de los Niños, Niñas y Adolescentes
ENJ-3-200 Derechos de los Niños, Niñas y Adolescentes
 
Adolescentes y nuevas tecnologías. Peligros ocultos.
Adolescentes y nuevas tecnologías. Peligros ocultos.Adolescentes y nuevas tecnologías. Peligros ocultos.
Adolescentes y nuevas tecnologías. Peligros ocultos.
 
El juego
El juegoEl juego
El juego
 
Garbage First & You
Garbage First & YouGarbage First & You
Garbage First & You
 
Building Multi-Tenant Saas Apps
Building  Multi-Tenant Saas AppsBuilding  Multi-Tenant Saas Apps
Building Multi-Tenant Saas Apps
 
Locking Down CF Servers
Locking Down CF ServersLocking Down CF Servers
Locking Down CF Servers
 
Marketing for developers
Marketing for developersMarketing for developers
Marketing for developers
 
Web hackingtools 2015
Web hackingtools 2015Web hackingtools 2015
Web hackingtools 2015
 
Git sourcecontrolpreso
Git sourcecontrolpresoGit sourcecontrolpreso
Git sourcecontrolpreso
 
Our application got popular and now it breaks
Our application got popular and now it breaksOur application got popular and now it breaks
Our application got popular and now it breaks
 

Similar to A Bit of REST

REST in AEM by Roy Fielding
REST in AEM by Roy FieldingREST in AEM by Roy Fielding
REST in AEM by Roy FieldingAEM HUB
 
Day: Open Development
Day: Open DevelopmentDay: Open Development
Day: Open DevelopmentDay Software
 
Web programming by Najeeb ullahAzad(1)
Web programming by Najeeb ullahAzad(1)Web programming by Najeeb ullahAzad(1)
Web programming by Najeeb ullahAzad(1)azadmcs
 
shobhit training report (3) (4).pdf report
shobhit training report (3) (4).pdf reportshobhit training report (3) (4).pdf report
shobhit training report (3) (4).pdf reportpoojaranga2911
 
Introduction to Basic Concepts in Web
Introduction to Basic Concepts in WebIntroduction to Basic Concepts in Web
Introduction to Basic Concepts in WebJussi Pohjolainen
 
IWMW 2002: Web standards briefing (session C2)
IWMW 2002: Web standards briefing (session C2)IWMW 2002: Web standards briefing (session C2)
IWMW 2002: Web standards briefing (session C2)IWMW
 
Computer and internet applications in medicine
Computer and internet applications in medicineComputer and internet applications in medicine
Computer and internet applications in medicineAhmed-Refat Refat
 
Hypertext transfer protocol (http)
Hypertext transfer protocol (http)Hypertext transfer protocol (http)
Hypertext transfer protocol (http)johnny19910916
 
Meetup Tech Talk on Web Performance
Meetup Tech Talk on Web PerformanceMeetup Tech Talk on Web Performance
Meetup Tech Talk on Web PerformanceJean Tunis
 
OAuth and REST web services
OAuth and REST web servicesOAuth and REST web services
OAuth and REST web servicessullis
 
Internet and Web Technology (CLASS-1) [Introduction]
Internet and Web Technology (CLASS-1) [Introduction]Internet and Web Technology (CLASS-1) [Introduction]
Internet and Web Technology (CLASS-1) [Introduction]Ayes Chinmay
 

Similar to A Bit of REST (20)

REST in AEM by Roy Fielding
REST in AEM by Roy FieldingREST in AEM by Roy Fielding
REST in AEM by Roy Fielding
 
Day: Open Development
Day: Open DevelopmentDay: Open Development
Day: Open Development
 
Web technology Unit-II Part A
Web technology Unit-II Part AWeb technology Unit-II Part A
Web technology Unit-II Part A
 
Web programming by Najeeb ullahAzad(1)
Web programming by Najeeb ullahAzad(1)Web programming by Najeeb ullahAzad(1)
Web programming by Najeeb ullahAzad(1)
 
shobhit training report (3) (4).pdf report
shobhit training report (3) (4).pdf reportshobhit training report (3) (4).pdf report
shobhit training report (3) (4).pdf report
 
Web standards
Web standards Web standards
Web standards
 
Http 2
Http 2Http 2
Http 2
 
HTTP & HTML & Web
HTTP & HTML & WebHTTP & HTML & Web
HTTP & HTML & Web
 
Introduction to Basic Concepts in Web
Introduction to Basic Concepts in WebIntroduction to Basic Concepts in Web
Introduction to Basic Concepts in Web
 
Microservices
MicroservicesMicroservices
Microservices
 
IWMW 2002: Web standards briefing (session C2)
IWMW 2002: Web standards briefing (session C2)IWMW 2002: Web standards briefing (session C2)
IWMW 2002: Web standards briefing (session C2)
 
Computer and internet applications in medicine
Computer and internet applications in medicineComputer and internet applications in medicine
Computer and internet applications in medicine
 
Internet
InternetInternet
Internet
 
Unit 02: Web Technologies (1/2)
Unit 02: Web Technologies (1/2)Unit 02: Web Technologies (1/2)
Unit 02: Web Technologies (1/2)
 
Html5
Html5Html5
Html5
 
Rest overview briefing
Rest  overview briefingRest  overview briefing
Rest overview briefing
 
Hypertext transfer protocol (http)
Hypertext transfer protocol (http)Hypertext transfer protocol (http)
Hypertext transfer protocol (http)
 
Meetup Tech Talk on Web Performance
Meetup Tech Talk on Web PerformanceMeetup Tech Talk on Web Performance
Meetup Tech Talk on Web Performance
 
OAuth and REST web services
OAuth and REST web servicesOAuth and REST web services
OAuth and REST web services
 
Internet and Web Technology (CLASS-1) [Introduction]
Internet and Web Technology (CLASS-1) [Introduction]Internet and Web Technology (CLASS-1) [Introduction]
Internet and Web Technology (CLASS-1) [Introduction]
 

More from ColdFusionConference

Building better SQL Server Databases
Building better SQL Server DatabasesBuilding better SQL Server Databases
Building better SQL Server DatabasesColdFusionConference
 
API Economy, Realizing the Business Value of APIs
API Economy, Realizing the Business Value of APIsAPI Economy, Realizing the Business Value of APIs
API Economy, Realizing the Business Value of APIsColdFusionConference
 
Crafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectCrafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectColdFusionConference
 
Security And Access Control For APIS using CF API Manager
Security And Access Control For APIS using CF API ManagerSecurity And Access Control For APIS using CF API Manager
Security And Access Control For APIS using CF API ManagerColdFusionConference
 
Monetizing Business Models: ColdFusion and APIS
Monetizing Business Models: ColdFusion and APISMonetizing Business Models: ColdFusion and APIS
Monetizing Business Models: ColdFusion and APISColdFusionConference
 
Become a Security Rockstar with ColdFusion 2016
Become a Security Rockstar with ColdFusion 2016Become a Security Rockstar with ColdFusion 2016
Become a Security Rockstar with ColdFusion 2016ColdFusionConference
 
Developer Insights for Application Upgrade to ColdFusion 2016
Developer Insights for Application Upgrade to ColdFusion 2016Developer Insights for Application Upgrade to ColdFusion 2016
Developer Insights for Application Upgrade to ColdFusion 2016ColdFusionConference
 
ColdFusion Keynote: Building the Agile Web Since 1995
ColdFusion Keynote: Building the Agile Web Since 1995ColdFusion Keynote: Building the Agile Web Since 1995
ColdFusion Keynote: Building the Agile Web Since 1995ColdFusionConference
 
Super Fast Application development with Mura CMS
Super Fast Application development with Mura CMSSuper Fast Application development with Mura CMS
Super Fast Application development with Mura CMSColdFusionConference
 
Build your own secure and real-time dashboard for mobile and web
Build your own secure and real-time dashboard for mobile and webBuild your own secure and real-time dashboard for mobile and web
Build your own secure and real-time dashboard for mobile and webColdFusionConference
 
Herding cats managing ColdFusion servers with commandbox
Herding cats managing ColdFusion servers with commandboxHerding cats managing ColdFusion servers with commandbox
Herding cats managing ColdFusion servers with commandboxColdFusionConference
 

More from ColdFusionConference (20)

Cf ppt vsr
Cf ppt vsrCf ppt vsr
Cf ppt vsr
 
Building better SQL Server Databases
Building better SQL Server DatabasesBuilding better SQL Server Databases
Building better SQL Server Databases
 
API Economy, Realizing the Business Value of APIs
API Economy, Realizing the Business Value of APIsAPI Economy, Realizing the Business Value of APIs
API Economy, Realizing the Business Value of APIs
 
Don't just pdf, Smart PDF
Don't just pdf, Smart PDFDon't just pdf, Smart PDF
Don't just pdf, Smart PDF
 
Crafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectCrafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an Architect
 
Security And Access Control For APIS using CF API Manager
Security And Access Control For APIS using CF API ManagerSecurity And Access Control For APIS using CF API Manager
Security And Access Control For APIS using CF API Manager
 
Monetizing Business Models: ColdFusion and APIS
Monetizing Business Models: ColdFusion and APISMonetizing Business Models: ColdFusion and APIS
Monetizing Business Models: ColdFusion and APIS
 
Become a Security Rockstar with ColdFusion 2016
Become a Security Rockstar with ColdFusion 2016Become a Security Rockstar with ColdFusion 2016
Become a Security Rockstar with ColdFusion 2016
 
ColdFusion in Transit action
ColdFusion in Transit actionColdFusion in Transit action
ColdFusion in Transit action
 
Developer Insights for Application Upgrade to ColdFusion 2016
Developer Insights for Application Upgrade to ColdFusion 2016Developer Insights for Application Upgrade to ColdFusion 2016
Developer Insights for Application Upgrade to ColdFusion 2016
 
Where is cold fusion headed
Where is cold fusion headedWhere is cold fusion headed
Where is cold fusion headed
 
ColdFusion Keynote: Building the Agile Web Since 1995
ColdFusion Keynote: Building the Agile Web Since 1995ColdFusion Keynote: Building the Agile Web Since 1995
ColdFusion Keynote: Building the Agile Web Since 1995
 
Instant ColdFusion with Vagrant
Instant ColdFusion with VagrantInstant ColdFusion with Vagrant
Instant ColdFusion with Vagrant
 
Super Fast Application development with Mura CMS
Super Fast Application development with Mura CMSSuper Fast Application development with Mura CMS
Super Fast Application development with Mura CMS
 
Build your own secure and real-time dashboard for mobile and web
Build your own secure and real-time dashboard for mobile and webBuild your own secure and real-time dashboard for mobile and web
Build your own secure and real-time dashboard for mobile and web
 
Why Everyone else writes bad code
Why Everyone else writes bad codeWhy Everyone else writes bad code
Why Everyone else writes bad code
 
Testing automaton
Testing automatonTesting automaton
Testing automaton
 
Rest ful tools for lazy experts
Rest ful tools for lazy expertsRest ful tools for lazy experts
Rest ful tools for lazy experts
 
Herding cats managing ColdFusion servers with commandbox
Herding cats managing ColdFusion servers with commandboxHerding cats managing ColdFusion servers with commandbox
Herding cats managing ColdFusion servers with commandbox
 
Realtime with websockets
Realtime with websocketsRealtime with websockets
Realtime with websockets
 

Recently uploaded

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
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
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

A Bit of REST

  • 1. A bit of REST (Representational State Transfer) Roy T. Fielding | Senior Principal Scientist, Adobe
  • 2. © 2015 Adobe Systems Incorporated. All Rights Reserved. Warning 2 Ph.D. Dissertation

  • 3. REST © 2015 Adobe Systems Incorporated. All Rights Reserved. Why talk about REST? 3 What is REST Anyway? Copyright © 2012, ZapThink, a Dovèl Technologies Company • Representational State Transfer (REST) is a style of software architecture for distributed hypermedia systems such as the World Wide Web • Roy Fielding looked at the Web and saw that it was good BUZZWORD Because has become a There’s nothing particularly wrong with that… unless you happen to be me… or working with me
  • 4. Jun 93 Dec 93 Jun 94 Dec 94 Jun 95 130 623 2,738 10,022 23,517 Public WWW servers [Matthew Gray] © 2015 Adobe Systems Incorporated. All Rights Reserved. A bit of context: REST also began 20 years ago 4
  • 5.
  • 6. Jun 93 Dec 93 Jun 94 Dec 94 Jun 95 130 623 2,738 Public WWW servers [Matthew Gray] Using XMosaic www.ics.uci.edu wwwstat MOMspider Conditional GET 1st WWW Relative URLs HTML 2.0 2nd WWW libwww-perl © 2015 Adobe Systems Incorporated. All Rights Reserved. A bit of context: REST also began 20 years ago 4
  • 7. Jun 93 Dec 93 Jun 94 Dec 94 Jun 95 Public WWW servers [Matthew Gray]
  • 8.
  • 9.
  • 10. © 2015 Adobe Systems Incorporated. All Rights Reserved. Am I going to talk about ColdFusion's implementation of REST APIs and API Management? 6 REST
 is NOT an
 implementation No,
  • 11. © 2015 Adobe Systems Incorporated. All Rights Reserved. Three (very different) perspectives of the Web 7 Information http://www.w3.org/TR/html4/ 4/2/08 12:09 AM next table of contents elements attributes index HTML 4.01 Specification W3C Recommendation 24 December 1999 This version: http://www.w3.org/TR/1999/REC-html401-19991224 (plain text [794Kb], gzip'ed tar archive of HTML files [371Kb], a .zip archive of HTML files [405Kb], gzip'ed Postscript file [746Kb, 389 pages], gzip'ed PDF file [963Kb]) Latest version of HTML 4.01: http://www.w3.org/TR/html401 Latest version of HTML 4: http://www.w3.org/TR/html4 Latest version of HTML: http://www.w3.org/TR/html Previous version of HTML 4.01: http://www.w3.org/TR/1999/PR-html40-19990824 Previous HTML 4 Recommendation: http://www.w3.org/TR/1998/REC-html40-19980424 Editors: Dave Raggett <dsr@w3.org> Arnaud Le Hors, W3C Ian Jacobs, W3C Copyright ©1997-1999 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply. Abstract This specification defines the HyperText Markup Language (HTML), the publishing language of the World Wide Web. This specification defines HTML 4.01, which is a subversion of HTML 4. In addition to the text, multimedia, and hyperlink features of the previous versions of HTML (HTML 3.2 [HTML32] and HTML 2.0 [RFC1866]), HTML 4 supports more multimedia options, scripting languages, style sheets, better printing facilities, and documents that are more accessible to users with disabilities. HTML 4 also takes great strides towards the internationalization of documents, with the goal of making the Web truly World Wide. HTML 4 is an SGML application conforming to International Standard ISO 8879 -- Standard Generalized Markup Language [ISO8879]. Status of this document This section describes the status of this document at the time of its publication. Other documents may supersede this document. The latest status of this document series is maintained at the W3C. Fielding, et al Standards Track [Page 1] Network Working Group R. Fielding Request for Comments: 2068 UC Irvine Category: Standards Track J. Gettys J. C. Mogul DEC H. Frystyk T. Berners-Lee MIT/LCS January 1997 Hypertext Transfer Protocol -- HTTP/1.1 Status of this Memo This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited. Abstract The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypermedia information systems. It is a generic, stateless, object-oriented protocol which can be used for many tasks, such as name servers and distributed object management systems, through extension of its request methods. A feature of HTTP is the typing and negotiation of data representation, allowing systems to be built independently of the data being transferred. HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification defines the protocol referred to as “HTTP/1.1”. file://localhost/Users/fielding/ws/labs-webarch/uri/rfc/rfc3986.html 4/2/08 12:16 AM Network Working Group T. Berners-Lee Request for Comments: 3986 W3C/MIT Obsoletes: 2732, 2396, 1808 R. Fielding STD: 66 Day Software Updates: 1738 L. Masinter Category: Standards Track Adobe Systems January 2005 Uniform Resource Identifier (URI): Generic Syntax Status of this Memo This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the “Internet Official Protocol Standards” (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited. Copyright Notice Copyright © The Internet Society (2005). All Rights Reserved. Abstract A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. ProtocolsBrowsers
  • 12. © 2015 Adobe Systems Incorporated. All Rights Reserved. Web Implementation (user view) 8
  • 13. © 2015 Adobe Systems Incorporated. All Rights Reserved. Web Implementation (origin view) 9 Application Servers
 Dynamic Content Centralized Data RDBMS, NFS, SAN Webservers/Gateways
 Accelerator Cache User Agents Intermediary
 Proxy Cache
  • 14. © 2015 Adobe Systems Incorporated. All Rights Reserved. Web Architecture 10 $ $ $ $ $ $ $ $User Agents Proxies Gateways Origin Servers Architecture is a vertical abstraction on implementation
  • 15. © 2015 Adobe Systems Incorporated. All Rights Reserved. Web Architecture 11 http://www.w3.org/TR/html4/ 4/2/08 12:09 AM next table of contents elements attributes index HTML 4.01 Specification W3C Recommendation 24 December 1999 This version: http://www.w3.org/TR/1999/REC-html401-19991224 (plain text [794Kb], gzip'ed tar archive of HTML files [371Kb], a .zip archive of HTML files [405Kb], gzip'ed Postscript file [746Kb, 389 pages], gzip'ed PDF file [963Kb]) Latest version of HTML 4.01: http://www.w3.org/TR/html401 Latest version of HTML 4: http://www.w3.org/TR/html4 Latest version of HTML: http://www.w3.org/TR/html Previous version of HTML 4.01: http://www.w3.org/TR/1999/PR-html40-19990824 Previous HTML 4 Recommendation: http://www.w3.org/TR/1998/REC-html40-19980424 Editors: Dave Raggett <dsr@w3.org> Arnaud Le Hors, W3C Ian Jacobs, W3C Copyright ©1997-1999 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply. Abstract This specification defines the HyperText Markup Language (HTML), the publishing language of the World Wide Web. This specification defines HTML 4.01, which is a subversion of HTML 4. In addition to the text, multimedia, and hyperlink features of the previous versions of HTML (HTML 3.2 [HTML32] and HTML 2.0 [RFC1866]), HTML 4 supports more multimedia options, scripting languages, style sheets, better printing facilities, and documents that are more accessible to users with disabilities. HTML 4 also takes great strides towards the internationalization of documents, with the goal of making the Web truly World Wide. HTML 4 is an SGML application conforming to International Standard ISO 8879 -- Standard Generalized Markup Language [ISO8879]. Status of this document This section describes the status of this document at the time of its publication. Other documents may supersede this document. The latest status of this document series is maintained at the W3C. Fielding, et al Standards Track [Page 1] Network Working Group R. Fielding Request for Comments: 2068 UC Irvine Category: Standards Track J. Gettys J. C. Mogul DEC H. Frystyk T. Berners-Lee MIT/LCS January 1997 Hypertext Transfer Protocol -- HTTP/1.1 Status of this Memo This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited. Abstract The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypermedia information systems. It is a generic, stateless, object-oriented protocol which can be used for many tasks, such as name servers and distributed object management systems, through extension of its request methods. A feature of HTTP is the typing and negotiation of data representation, allowing systems to be built independently of the data being transferred. HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification defines the protocol referred to as “HTTP/1.1”. file://localhost/Users/fielding/ws/labs-webarch/uri/rfc/rfc3986.html 4/2/08 12:16 AM Network Working Group T. Berners-Lee Request for Comments: 3986 W3C/MIT Obsoletes: 2732, 2396, 1808 R. Fielding STD: 66 Day Software Updates: 1738 L. Masinter Category: Standards Track Adobe Systems January 2005 Uniform Resource Identifier (URI): Generic Syntax Status of this Memo This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the “Internet Official Protocol Standards” (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited. Copyright Notice Copyright © The Internet Society (2005). All Rights Reserved. Abstract A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. Protocols Web protocols define that vertical abstraction on implementation
  • 16. © 2015 Adobe Systems Incorporated. All Rights Reserved. So, is REST the Web Architecture? 12 REST
 is NOT an
 architecture! No,
  • 17. © 2015 Adobe Systems Incorporated. All Rights Reserved. Original proposal for the World Wide Web 13 This document "Hypertext" Linked information Hypermedia CERNDOC ENQUIRE Tim Berners-Lee section group C.E.R.N wrote division Hierarchical systems for example for example describes includes for example A Proposal "Mesh" Hyper Card uucp News IBM GroupTalk VAX/ NOTES Computer conferencing describes includes includes Comms ACM describes refers to describes etc group unifies [Berners-Lee, 1989]
  • 18. Linked information CERNDOC ENQUIRE Hierarchical systems for example for examplefor example A Proposal "Mesh" Hyper Card uucp News IBM GroupTalk VAX/ NOTES Computer conferencing describes unifies © 2015 Adobe Systems Incorporated. All Rights Reserved. The Web is an application integration system 14 [Berners-Lee, 1989]
  • 19. Linked information CERNDOC ENQUIRE Hierarchical systems for example for examplefor example A Proposal "Mesh" Hyper Card uucp News IBM GroupTalk VAX/ NOTES Computer conferencing describes unifies © 2015 Adobe Systems Incorporated. All Rights Reserved. The Web is an application integration system 14 [Berners-Lee, 1989]
  • 20. © 2015 Adobe Systems Incorporated. All Rights Reserved. Network-based Applications • Application § short for “applying a computer to accomplish a given purpose” § examples: finding a document, managing a bank account, or buying a travel ticket
 • Network-based § operating over the network with full knowledge of the user § i.e., unlike distributed, which intentionally hides the network 15
  • 21. © 2015 Adobe Systems Incorporated. All Rights Reserved. Architectural Styles §A horizontal abstraction across multiple architectures (vertical abstractions) § names a repeated architectural pattern § defined by its design constraints § chosen for the properties they induce § REST is an architectural style § for network-based applications § to induce a specific set of architectural properties § desired for the World Wide Web 16 Ionic Order
  • 22. © 2015 Adobe Systems Incorporated. All Rights Reserved. REST is an accumulation of design constraints that induce architectural properties 17 Figure 5-9. REST Derivation by Style Constraints RR CS LS VM U CSS LCS COD$ C$SS LC$SS LCODC$SS REST replicated on-demand separated layered mobile uniform interface stateless shared intermediate processing cacheable extensible simple reusable scalable reliable multi- org. visible programmable
  • 23. © 2015 Adobe Systems Incorporated. All Rights Reserved. REST is an accumulation of design constraints that induce architectural properties 17 Figure 5-9. REST Derivation by Style Constraints RR CS LS VM U CSS LCS COD$ C$SS LC$SS LCODC$SS REST replicated on-demand separated layered mobile uniform interface stateless shared intermediate processing cacheable extensible simple reusable scalable reliable multi- org. visible programmable Constraint
  • 24. © 2015 Adobe Systems Incorporated. All Rights Reserved. REST is an accumulation of design constraints that induce architectural properties 17 Figure 5-9. REST Derivation by Style Constraints RR CS LS VM U CSS LCS COD$ C$SS LC$SS LCODC$SS REST replicated on-demand separated layered mobile uniform interface stateless shared intermediate processing cacheable extensible simple reusable scalable reliable multi- org. visible programmable Property
  • 28. © 2015 Adobe Systems Incorporated. All Rights Reserved. REST’s Five Uniform Interface Constraints §All important resources are identified by one resource identifier mechanism § induces simple, visible, reusable, stateless communication §Access methods have the same semantics for all resources § induces visible, scalable, available through layered system, cacheable, and shared caches §Resources are manipulated through the exchange of representations § induces simple, visible, reusable, cacheable, and evolvable (information hiding) §Representations are exchanged via self-descriptive messages § induces visible, scalable, available through layered system, cacheable, and shared caches § induces evolvable via extensible communication §Hypertext as the engine of application state § induces simple, visible, reusable, and cacheable through data-oriented integration § induces evolvable (loose coupling) via late binding of application transitions 21
  • 29. © 2015 Adobe Systems Incorporated. All Rights Reserved. Why the hypermedia constraint? Hypertext as the Engine of Application State 
 each state can be dynamic
 each transition can be redirected 22 S0 S2S1 S3 R o y * *
  • 30. © 2015 Adobe Systems Incorporated. All Rights Reserved. The client only needs to know one state and its transitions! Follow Your Nose 23 S0 SS1 SR o y * *
  • 31. © 2015 Adobe Systems Incorporated. All Rights Reserved. The client only needs to know one state and its transitions! Follow Your Nose 24 S0 S2S1 SR o y * *
  • 32. © 2015 Adobe Systems Incorporated. All Rights Reserved. The client only needs to know one state and its transitions! Follow Your Nose 25 S0 S2S S3 R o y * *
  • 33. © 2015 Adobe Systems Incorporated. All Rights Reserved. The client only needs to know one state and its transitions! Follow Your Nose 26 S SS S3 R o y * *
  • 34. © 2015 Adobe Systems Incorporated. All Rights Reserved. Know Your Audience REST
 emphasizes evolvability to sustain an uncontrollable system If you think you have control over the system or aren’t interested in evolvability, don’t waste your time arguing about REST 27
  • 35. © 2015 Adobe Systems Incorporated. All Rights Reserved. What is the most common question about REST? 28 REST
 API? So, where is your …
  • 36. © 2015 Adobe Systems Incorporated. All Rights Reserved. Sorry, it's not that simple An API that
 provides network-based access to resources
 via a uniform interface of self-descriptive messages
 containing hypertext to indicate potential state transitions
 might
 be part of an overall system that is
 a RESTful application 29
  • 37. © 2015 Adobe Systems Incorporated. All Rights Reserved. Some tips for building an API for RESTful applications §Identify all of the resources § few resources are atomic; most are collections or views of other resources § don't confuse identity (naming) with containment (storage) § use access control, not obscurity, to control publication § resources have more in common with stored procedures than they do with records or files §Iteratively develop resources and state transitions (use cases) § don't try to do everything at once § don't make any assumptions about received content, order, versioning, etc. §Be flexible regarding media types and access protocols § start by prototyping in HTML and exploring with browsers and spiders § if you need to publish JSON, use a profile that defines hypertext semantics § use relative URLs wherever possible (to save space and improve portability) 30
  • 38. © 2015 Adobe Systems Incorporated. All Rights Reserved. Don’t over-think the problem space a RESTful API is just a website
 for users with a limited vocabulary
 (machine to machine interaction) 31
  • 39. © 2015 Adobe Systems Incorporated. All Rights Reserved. Don’t under-think the problem space building a good website
 is not easy
 (but it has been done before) 32
  • 40. © 2015 Adobe Systems Incorporated. All Rights Reserved. So, what does that mean for ColdFusion? Why are we using an API designed by Sun/Oracle
 to build a website? 33
  • 41. © 2015 Adobe Systems Incorporated. All Rights Reserved. So, what does that mean for ColdFusion? Why are we using an API designed by Sun/Oracle
 to build a website? Wouldn't it be better to use
 a language for rapid application development
 that could automatically select its output serialization
 to match the media type in which it is embedded? 33
  • 42. © 2015 Adobe Systems Incorporated. All Rights Reserved.