Mike Amundsen



The Costs and Benefits of
Building Hypermedia APIs
(with Node.js)



                      Layer 7 Confidential   1
Mike Amundsen
Author
Presenter
Software Explorer
Principal API Architect




                           Layer 7 Confidential   2
OK, let‟s get started…




                     Layer 7 Confidential   3
Theonia
  "a looking at, viewing, beholding”




                        Layer 7 Confidential   4
Theory
 "a looking at, viewing, beholding”




                       Layer 7 Confidential   5
Praxis
                   “doing”




         Layer 7 Confidential   6
Practice
                     “doing”




           Layer 7 Confidential   7
First, a lesson to remember
  from Donald Norman…




                        Layer 7 Confidential   8
Affordances


“The value of a well-designed object,
Is when it has such a rich set of affordances,
That the people who use it,
Can do things with it,
That the designer never imagined.”

- Donald Norman




                                      Layer 7 Confidential   10
Affordances


“The value of a well-designed object,
Is when it has such a rich set of affordances,
That the people who use it,
Can do things with it,
That the designer never imagined.”

- Donald Norman




                                      Layer 7 Confidential   11
Affordances


“The value of a well-designed object,
Is when it has such a rich set of affordances,
That the people who use it,
Can do things with it,
That the designer never imagined.”

- Donald Norman




                                      Layer 7 Confidential   12
Affordances


“The value of a well-designed object,
Is when it has such a rich set of affordances,
That the people who use it,
Can do things with it,
That the designer never imagined.”

- Donald Norman




                                      Layer 7 Confidential   13
Affordances


“The value of a well-designed object,
Is when it has such a rich set of affordances,
That the people who use it,
Can do things with it,
That the designer never imagined.”

- Donald Norman




                                      Layer 7 Confidential   14
Some background…




                   Layer 7 Confidential   15
Affordances

The foundation for perception is ambient,
 ecologically available information.


Affordances are all "action possibilities" latent in
 the environment.




Theory of Affordances, 1979
- James J. Gibson

                                           Layer 7 Confidential   16
Affordances
 Seven Stages of Action




The Design of Everyday Things, 1988
- Donald Norman
                                      Layer 7 Confidential   17
Affordances
Knowledge (“head” vs. “world”)
                   Knowledge in the
   Property                                    Knowledge in the Head
                       World
                  Learning not required.
                      Interpretation
                                              Requires learning, which
                 substitutes for learning.
                                                  can be considerable.
                    How easy it is to
                                              Learning is made easier if
                 interpret information is
   Learning                                        there is meaning of
                   the world depends
                                             structure to the material (or
                     upon how well it
                                               if there is a good mental
                     exploits natural
                                                         model).
                      mappings and
                       constraints.
                 Tends to be slowed up
  Efficiency     by the need to find and
                                                 Can be very efficient
    of use        interpret the external
                       information.

 Ease of use
    at first               High                            Low
  encounter
April 17, 2012                 APIs to Affordances : WS-REST 2012        18
                                                                              Layer 7 Confidential   18
Affordances

 "Hypermedia is defined by the presence of application
 control information embedded within, or as a layer above,
 the presentation of information“ (2001)
 “When I say [Hypermedia], I mean the simultaneous
 presentation of information and controls such that the
 information becomes the affordance through which the user
 obtains choices and selects actions” (2008)


Architectural Styles and the Design
of Network-based Software, 2001
- Roy T. Fielding

                                                Layer 7 Confidential   19
Affordances

 "Hypermedia is defined by the presence of application
 control information embedded within, or as a layer above,
 the presentation of information“ (2001)
 “When I say [Hypermedia], I mean the simultaneous
 presentation of information and controls such that the
 information becomes the affordance through which the user
 obtains choices and selects actions” (2008)


Architectural Styles and the Design
of Network-based Software, 2001
- Roy T. Fielding

                                                Layer 7 Confidential   20
Affordances




Affordances
   make
Hypermedia
 possible.



                Layer 7 Confidential   21
Affordances




      Hypermedia
     can provide a
Rich Set of Affordances




                     Layer 7 Confidential   22
Maze+XML



       Design #1:
A big pile of Affordances




                      Layer 7 Confidential   23
Maze+XML

 Maze+XML media type
 First design in late 2010, registered w/ IANA 2011
 “…an XML data format for sharing maze state information
 between clients and servers. It can be used to implement
 simple mazes, adventure games, and other related data.”
 Read-only navigational links
 Nine link identifiers:
 collection, maze, start, exit, current,
 north, south, east, west




                                                 Layer 7 Confidential   24
Maze+XML
Message




           Layer 7 Confidential   25
Maze+XML
Server




          Layer 7 Confidential   26
Maze+XML
Client




          Layer 7 Confidential   27
Maze+XML
Client




          Layer 7 Confidential   28
Maze+XML
Client




          Layer 7 Confidential   29
Maze+XML
Client Code




               Layer 7 Confidential   30
Maze+XML




In the wild…




                Layer 7 Confidential   31
Maze+XML

 Darrel Miller
 “A good example of using link relations to convey
 domain specific semantics.”
 “Has been a good test bed for trying to develop a UI
 transparently that tracks the state of the user agent as it
 navigates between representations.”




                                                  Layer 7 Confidential   32
Maze+XML
Darrel Miller – C#




                      Layer 7 Confidential   33
Maze+XML

 Yannick Loiseau
 “I can say that a non-restful architecture would have been a
 lot harder to deal with in bash, because hypermedia
 obviously made the maze exploration really easy”
 “I think that Link headers would be even
 easier to deal with…”




                                                 Layer 7 Confidential   34
Maze+XML
Yannick Loiseau - Python




                            Layer 7 Confidential   35
Maze+XML
Yannick Loiseau - Bash




                          Layer 7 Confidential   36
Maze+XML
 Characteristics
 - Read-Only navigational links
 - Limited set of identifiers
 - Domain specific

 Benefits
 - Simple, direct design
 - Easy to create servers/clients
 - M2M works when algorithm is available

 Costs
 - Limited reach
 - M2M clients challenge evolvability

                                            Layer 7 Confidential   37
H-Factors




“Pardon me, did you say „links‟?”




                           Layer 7 Confidential   38
H-Factors

“The H Factor of a media-type is a measure of the
 level of hypermedia support within that media-type.”
“H Factor values can be used to compare and
 contrast media types in order to aid in selecting the
 proper media-type(s) for your
 implementation.”


REST: From Research to Practice :
Hypermedia Types, 2011
- Mike Amundsen

                                          Layer 7 Confidential   39
H-Factors
Analyzing Media Types




                        Layer 7 Confidential   40
H-Factors
Analyzing Media Types




                        Layer 7 Confidential   41
H-Factors
Analyzing Media Types




                        Layer 7 Confidential   42
H-Factors

There are five LINK Factors
 (LO, LE, LT, LI, LN)
There are four CONTROL Factors
 (CR, CU, CM, CL)




                                  Layer 7 Confidential   43
H-Factors

There are five LINK Factors
 (LO, LE, LT, LI, LN)
There are four CONTROL Factors
 (CR, CU, CM, CL)




                                  Layer 7 Confidential   44
H-Factors
Linking
 Outbound Links (LO)




                        Layer 7 Confidential   45
H-Factors
Linking
 Outbound Links (LO)
 Embedded Links (LE)




                        Layer 7 Confidential   46
H-Factors
Linking
 Outbound Links (LO)
 Embedded Links (LE)
 Templated Links (LT)




                         Layer 7 Confidential   47
H-Factors
Linking
 Outbound Links (LO)
 Embedded Links (LE)
 Templated Links (LT)
 Idempotent Links (LI)




                          Layer 7 Confidential   48
H-Factors
Linking
 Outbound Links (LO)
 Embedded Links (LE)
 Templated Links (LT)
 Idempotent Links (LI)
 Non-Idempotent Links (LN)




                              Layer 7 Confidential   49
H-Factors

There are five LINK Factors
 (LO, LE, LT, LI, LN)
There are four CONTROL Factors
 (CR, CU, CM, CL)




                                  Layer 7 Confidential   50
H-Factors
Control
 Request Controls (CR)




                          Layer 7 Confidential   51
H-Factors
Control
 Request Controls (CR)
 Update Controls (CU)




                          Layer 7 Confidential   52
H-Factors
Control
 Request Controls (CR)
 Update Controls (CU)
 Method Controls (CM)




                          Layer 7 Confidential   53
H-Factors
Control
 Request Controls (CR)
 Update Controls (CU)
 Method Controls (CM)
 Link Controls (CL)




                          Layer 7 Confidential   54
H-Factors

A pre-defined collection of H-Factors is called a
 “Media Type”
Each media type has it’s own “H-Factor” signature.




                                          Layer 7 Confidential   55
H-Factors




H-Factors document
  the Affordances
       of the
    Media Type



                     Layer 7 Confidential   56
H-Factors




“OK, media types, affordances, I see…




                             Layer 7 Confidential   57
Collection+JSON




         Design #2:
A read/write hypermedia type




                       Layer 7 Confidential   58
Collection+JSON

 Collection+JSON media type
 First designs in early 2011, registered w/ IANA mid 2011
 “…a JSON-based read/write hypermedia-type designed to
 support management and querying of simple collections.”
 It’s Atom w/ LT + templated writes
 Very limited link identifiers
 - collection, item, templates, query




                                                Layer 7 Confidential   59
Collection+JSON
Message




                Layer 7 Confidential   60
Collection+JSON
Message




                Layer 7 Confidential   61
Collection+JSON
Message




                Layer 7 Confidential   62
Collection+JSON
Message




                Layer 7 Confidential   63
Collection+JSON
Message




                Layer 7 Confidential   64
Collection+JSON
Server




               Layer 7 Confidential   65
Collection+JSON
Server




               Layer 7 Confidential   66
Collection+JSON
Server




               Layer 7 Confidential   67
Collection+JSON
Client Code




                    Layer 7 Confidential   68
Collection+JSON
Client Code




                    Layer 7 Confidential   69
Collection+JSON
Client Code




                    Layer 7 Confidential   70
Collection+JSON
Client App




                   Layer 7 Confidential   71
Collection+JSON
Client App




                   Layer 7 Confidential   72
Collection+JSON




In the wild…




               Layer 7 Confidential   73
Collection+JSON

 Nokia Research - Live Mixed Reality - Vlad Stribu
 “[Collection+JSON] … allows us to develop authoring tools
 that have the ability to self-adapt the user interface to the
 usage context.”




                                                   Layer 7 Confidential   74
Collection+JSON

 Nokia Research - Live Mixed Reality - Vlad Stribu
 “Collection+JSON was close enough to what we were
 looking for…”
 “Most important factor that influenced our decision was the
 community around this format…”




                                                 Layer 7 Confidential   75
Collection+JSON

 CloudApp – Larry Marburger
 “CloudApp allows you to share images, links, music, videos
 and files.”
 “[Due to developer team changes] we had some setbacks
 with the Mac app and subsequently the API. We just started
 working with another developer who's making amazing
 progress.”




                                               Layer 7 Confidential   76
Collection+JSON

 ember.js – Yehuda Katz
 “A framework for creating ambitious applications.”
 “By default, it's somewhat repetitive, but that can be
 addressed…”
 “It was straight-forward to extend it with features I needed”
 “I am starting to feel like with the number of extensions, I
 should consider [creating] my own media type.”




                                                    Layer 7 Confidential   77
Collection+JSON
 Characteristics
 - Read/Write w/ Templates
 - Small set of link identifiers
 - General “List Domain” handler

 Benefits
 - Limited design means simple parser
 - Servers easy, clients harder
 - Built-in support for custom domain annotations

 Costs
 - Domain mapping is more difficult
 - M2M clients limited to pre-declared vocabulary

                                                      Layer 7 Confidential   78
Affordance Aspects




“So, are all affordances essentially
             the same?”




                            Layer 7 Confidential   79
Affordance Aspects

“For the purposes of applying affordances to
 hypermedia, there are four important aspects
 to consider”




                                         Layer 7 Confidential   80
Affordance Aspects

Safe
The HTTP protocol supports a number of "safe"
 actions such as HEAD, and GET.




                                       Layer 7 Confidential   81
Affordance Aspects

Safe
The HTTP protocol supports a number of "safe"
 actions such as HEAD, and GET.
The HTTP methods PUT, POST, and DELETE are
 categorized as "unsafe" actions.




                                       Layer 7 Confidential   82
Affordance Aspects

Idempotent
When an HTML:FORM element has the METHOD
 property set to "get" it represents an idempotent
 action.




                                          Layer 7 Confidential   83
Affordance Aspects

Idempotent
When an HTML:FORM element has the METHOD
 property set to "get" it represents an idempotent
 action.
When the same property is set to "post" the
 affordance represents a non-idempotent action.




                                          Layer 7 Confidential   84
Affordance Aspects

Mutability
HTML:FORM affords mutability




                                  Layer 7 Confidential   85
Affordance Aspects

Mutability
HTML:FORM affords mutability
HTML:LINK is immutable




                                   Layer 7 Confidential   86
Affordance Aspects

Transclusion
HTML:IMG affords transclusion




                                   Layer 7 Confidential   87
Affordance Aspects

Transclusion
HTML:IMG affords transclusion
HTML:A does not




                                   Layer 7 Confidential   88
Affordance Aspects

However, this single affordance is not
very usable.




                                Layer 7 Confidential   89
Affordance Aspects




Media types
 should be
  usable



              Layer 7 Confidential   90
Affordance Aspects




Messages
should be
 usable



             Layer 7 Confidential   91
Affordance Aspects




  APIs
should be
 usable



             Layer 7 Confidential   92
ALPS for HTML




          Design #3:
Aspects, Factors, Abstractions




                        Layer 7 Confidential   93
ALPS for HTML

 ALPS profile URI
 First designs in early 2011 (not registered)
 “The purpose of Application-Level Profile Semantics (ALPS)
 is to document the application-level semantics of a particular
 implementation.”
 “The example profile here contains details
 on customizing the XHTML media type
 for a specific application domain:
 Micro-blogging.”




                                                 Layer 7 Confidential   94
ALPS for HTML

 ALPS profile URI
 Multiple parties building their own client or server
 applications without seeing each other's work or accessing a
 running "reference" implementation.
 Developers are expected to rely on the constraints and
 definitions found in this document (and the referenced
 RFCs) as the sole instruction.




                                                    Layer 7 Confidential   95
ALPS for HTML
Messages




                Layer 7 Confidential   96
ALPS for HTML
Messages




                Layer 7 Confidential   97
ALPS for HTML
Messages




                Layer 7 Confidential   98
ALPS for HTML
Server Code




                   Layer 7 Confidential   99
ALPS for HTML
Client Code




                  Layer 7 Confidential   100
ALPS for HTML
Client App




                 Layer 7 Confidential   101
ALPS for HTML
Client Bot




                 Layer 7 Confidential   102
ALPS for HTML
Client Bot




                 Layer 7 Confidential   103
ALPS for HTML
Client Bot




                 Layer 7 Confidential   104
ALPS for HTML




“In the wild…”




                 Layer 7 Confidential   105
ALPS for HTML

Rstat.us – Carol Nichols
 “There are two things that make rstat.us special: simplicity
 and openness.”
 “[S]ince we already have a full-functioning end-user facing
 site, the ALPS microblogging spec means adding a few
 attributes rather than having to maintain a totally separate
 API interface.”
 “The current way of
 presenting the ALPS
 spec is [too] flat.”



                                                 Layer 7 Confidential   106
ALPS for HTML

Rstat.us – Carol Nichols




                               Layer 7 Confidential   107
ALPS for HTML

Rstat.us – Carol Nichols




                               Layer 7 Confidential   108
ALPS for HTML
 Characteristics
 - Domain Semantics Only
 - Media-type agnostic

 Benefits
 - Focused on problem domain
 - Treats “pages” as the “API”

 Costs
 - Very abstract model
 - Tough to document
 - Seems “over complex” esp. for M2M cases



                                                 Layer 7 Confidential   109
ALPS for HTML




“If HTML is not the only media-type
            we need…”




                           Layer 7 Confidential   110
ALPS for HTML




“How do you choose?”




                   Layer 7 Confidential   111
Methodology




Mapping your domain to HTTP




                     Layer 7 Confidential   112
Methodology

Designing messages is the primary work
Focus on mapping to payloads, not identifiers
Survey existing media types first
If you can’t find a suitable H-Factor signature
 match, consider designing your own.
Pro Tip: you can always find a match.



                                          Layer 7 Confidential   113
Methodology

Start with a format (XML, JSON, HTML, etc.)
You might need to support more than one
Don’t assume you can “cross-map” formats easily
Pro Tip: you almost always need to support more
 than one.




                                       Layer 7 Confidential   114
Methodology

Select your other design elements as needed




                                      Layer 7 Confidential   115
Methodology

Represent State, not Objects
Remember both data and transitions
Craft lots of messages
Pro Tip: you can never have enough messages




                                      Layer 7 Confidential   116
Methodology

When you are sure you have:
The proper format
The right H-Factor signature
The correct mapping of domain to messages
Sufficent message examples
Then, and only then…



                                     Layer 7 Confidential   117
Methodology




You can start writing
     the code




                        Layer 7 Confidential   118
Methodology




Because…




             Layer 7 Confidential   119
Methodology




  The code is only
the implementation




                     Layer 7 Confidential   120
Methodology




  The code is only
the implementation

The media type is
   the design.


                     Layer 7 Confidential   121
Methodology




And if you get the design
         right...




                       Layer 7 Confidential   122
Methodology




Your users will be able
     to do things




                      Layer 7 Confidential   123
Methodology




Your users will be able
     to do things




                      Layer 7 Confidential   124
Methodology




Your users will be able
     to do things
 you never imagined




                      Layer 7 Confidential   125
Mike Amundsen



The Costs and Benefits of
Building Hypermedia APIs
(with Node.js)

      @mamund


                      Layer 7 Confidential   126

The Cost and Benefits of Building Hypermedia APIs (with Node.js) from QconSF

  • 1.
    Mike Amundsen The Costsand Benefits of Building Hypermedia APIs (with Node.js) Layer 7 Confidential 1
  • 2.
  • 3.
    OK, let‟s getstarted… Layer 7 Confidential 3
  • 4.
    Theonia "alooking at, viewing, beholding” Layer 7 Confidential 4
  • 5.
    Theory "a lookingat, viewing, beholding” Layer 7 Confidential 5
  • 6.
    Praxis “doing” Layer 7 Confidential 6
  • 7.
    Practice “doing” Layer 7 Confidential 7
  • 8.
    First, a lessonto remember from Donald Norman… Layer 7 Confidential 8
  • 10.
    Affordances “The value ofa well-designed object, Is when it has such a rich set of affordances, That the people who use it, Can do things with it, That the designer never imagined.” - Donald Norman Layer 7 Confidential 10
  • 11.
    Affordances “The value ofa well-designed object, Is when it has such a rich set of affordances, That the people who use it, Can do things with it, That the designer never imagined.” - Donald Norman Layer 7 Confidential 11
  • 12.
    Affordances “The value ofa well-designed object, Is when it has such a rich set of affordances, That the people who use it, Can do things with it, That the designer never imagined.” - Donald Norman Layer 7 Confidential 12
  • 13.
    Affordances “The value ofa well-designed object, Is when it has such a rich set of affordances, That the people who use it, Can do things with it, That the designer never imagined.” - Donald Norman Layer 7 Confidential 13
  • 14.
    Affordances “The value ofa well-designed object, Is when it has such a rich set of affordances, That the people who use it, Can do things with it, That the designer never imagined.” - Donald Norman Layer 7 Confidential 14
  • 15.
    Some background… Layer 7 Confidential 15
  • 16.
    Affordances The foundation forperception is ambient, ecologically available information. Affordances are all "action possibilities" latent in the environment. Theory of Affordances, 1979 - James J. Gibson Layer 7 Confidential 16
  • 17.
    Affordances  Seven Stagesof Action The Design of Everyday Things, 1988 - Donald Norman Layer 7 Confidential 17
  • 18.
    Affordances Knowledge (“head” vs.“world”) Knowledge in the Property Knowledge in the Head World Learning not required. Interpretation Requires learning, which substitutes for learning. can be considerable. How easy it is to Learning is made easier if interpret information is Learning there is meaning of the world depends structure to the material (or upon how well it if there is a good mental exploits natural model). mappings and constraints. Tends to be slowed up Efficiency by the need to find and Can be very efficient of use interpret the external information. Ease of use at first High Low encounter April 17, 2012 APIs to Affordances : WS-REST 2012 18 Layer 7 Confidential 18
  • 19.
    Affordances  "Hypermedia isdefined by the presence of application control information embedded within, or as a layer above, the presentation of information“ (2001)  “When I say [Hypermedia], I mean the simultaneous presentation of information and controls such that the information becomes the affordance through which the user obtains choices and selects actions” (2008) Architectural Styles and the Design of Network-based Software, 2001 - Roy T. Fielding Layer 7 Confidential 19
  • 20.
    Affordances  "Hypermedia isdefined by the presence of application control information embedded within, or as a layer above, the presentation of information“ (2001)  “When I say [Hypermedia], I mean the simultaneous presentation of information and controls such that the information becomes the affordance through which the user obtains choices and selects actions” (2008) Architectural Styles and the Design of Network-based Software, 2001 - Roy T. Fielding Layer 7 Confidential 20
  • 21.
    Affordances Affordances make Hypermedia possible. Layer 7 Confidential 21
  • 22.
    Affordances Hypermedia can provide a Rich Set of Affordances Layer 7 Confidential 22
  • 23.
    Maze+XML Design #1: A big pile of Affordances Layer 7 Confidential 23
  • 24.
    Maze+XML  Maze+XML mediatype  First design in late 2010, registered w/ IANA 2011  “…an XML data format for sharing maze state information between clients and servers. It can be used to implement simple mazes, adventure games, and other related data.”  Read-only navigational links  Nine link identifiers: collection, maze, start, exit, current, north, south, east, west Layer 7 Confidential 24
  • 25.
    Maze+XML Message Layer 7 Confidential 25
  • 26.
    Maze+XML Server Layer 7 Confidential 26
  • 27.
    Maze+XML Client Layer 7 Confidential 27
  • 28.
    Maze+XML Client Layer 7 Confidential 28
  • 29.
    Maze+XML Client Layer 7 Confidential 29
  • 30.
    Maze+XML Client Code Layer 7 Confidential 30
  • 31.
    Maze+XML In the wild… Layer 7 Confidential 31
  • 32.
    Maze+XML  Darrel Miller “A good example of using link relations to convey domain specific semantics.”  “Has been a good test bed for trying to develop a UI transparently that tracks the state of the user agent as it navigates between representations.” Layer 7 Confidential 32
  • 33.
    Maze+XML Darrel Miller –C# Layer 7 Confidential 33
  • 34.
    Maze+XML  Yannick Loiseau “I can say that a non-restful architecture would have been a lot harder to deal with in bash, because hypermedia obviously made the maze exploration really easy”  “I think that Link headers would be even easier to deal with…” Layer 7 Confidential 34
  • 35.
    Maze+XML Yannick Loiseau -Python Layer 7 Confidential 35
  • 36.
    Maze+XML Yannick Loiseau -Bash Layer 7 Confidential 36
  • 37.
    Maze+XML  Characteristics -Read-Only navigational links - Limited set of identifiers - Domain specific  Benefits - Simple, direct design - Easy to create servers/clients - M2M works when algorithm is available  Costs - Limited reach - M2M clients challenge evolvability Layer 7 Confidential 37
  • 38.
    H-Factors “Pardon me, didyou say „links‟?” Layer 7 Confidential 38
  • 39.
    H-Factors “The H Factorof a media-type is a measure of the level of hypermedia support within that media-type.” “H Factor values can be used to compare and contrast media types in order to aid in selecting the proper media-type(s) for your implementation.” REST: From Research to Practice : Hypermedia Types, 2011 - Mike Amundsen Layer 7 Confidential 39
  • 40.
    H-Factors Analyzing Media Types Layer 7 Confidential 40
  • 41.
    H-Factors Analyzing Media Types Layer 7 Confidential 41
  • 42.
    H-Factors Analyzing Media Types Layer 7 Confidential 42
  • 43.
    H-Factors There are fiveLINK Factors (LO, LE, LT, LI, LN) There are four CONTROL Factors (CR, CU, CM, CL) Layer 7 Confidential 43
  • 44.
    H-Factors There are fiveLINK Factors (LO, LE, LT, LI, LN) There are four CONTROL Factors (CR, CU, CM, CL) Layer 7 Confidential 44
  • 45.
    H-Factors Linking  Outbound Links(LO) Layer 7 Confidential 45
  • 46.
    H-Factors Linking  Outbound Links(LO)  Embedded Links (LE) Layer 7 Confidential 46
  • 47.
    H-Factors Linking  Outbound Links(LO)  Embedded Links (LE)  Templated Links (LT) Layer 7 Confidential 47
  • 48.
    H-Factors Linking  Outbound Links(LO)  Embedded Links (LE)  Templated Links (LT)  Idempotent Links (LI) Layer 7 Confidential 48
  • 49.
    H-Factors Linking  Outbound Links(LO)  Embedded Links (LE)  Templated Links (LT)  Idempotent Links (LI)  Non-Idempotent Links (LN) Layer 7 Confidential 49
  • 50.
    H-Factors There are fiveLINK Factors (LO, LE, LT, LI, LN) There are four CONTROL Factors (CR, CU, CM, CL) Layer 7 Confidential 50
  • 51.
    H-Factors Control  Request Controls(CR) Layer 7 Confidential 51
  • 52.
    H-Factors Control  Request Controls(CR)  Update Controls (CU) Layer 7 Confidential 52
  • 53.
    H-Factors Control  Request Controls(CR)  Update Controls (CU)  Method Controls (CM) Layer 7 Confidential 53
  • 54.
    H-Factors Control  Request Controls(CR)  Update Controls (CU)  Method Controls (CM)  Link Controls (CL) Layer 7 Confidential 54
  • 55.
    H-Factors A pre-defined collectionof H-Factors is called a “Media Type” Each media type has it’s own “H-Factor” signature. Layer 7 Confidential 55
  • 56.
    H-Factors H-Factors document the Affordances of the Media Type Layer 7 Confidential 56
  • 57.
    H-Factors “OK, media types,affordances, I see… Layer 7 Confidential 57
  • 58.
    Collection+JSON Design #2: A read/write hypermedia type Layer 7 Confidential 58
  • 59.
    Collection+JSON  Collection+JSON mediatype  First designs in early 2011, registered w/ IANA mid 2011  “…a JSON-based read/write hypermedia-type designed to support management and querying of simple collections.”  It’s Atom w/ LT + templated writes  Very limited link identifiers - collection, item, templates, query Layer 7 Confidential 59
  • 60.
    Collection+JSON Message Layer 7 Confidential 60
  • 61.
    Collection+JSON Message Layer 7 Confidential 61
  • 62.
    Collection+JSON Message Layer 7 Confidential 62
  • 63.
    Collection+JSON Message Layer 7 Confidential 63
  • 64.
    Collection+JSON Message Layer 7 Confidential 64
  • 65.
    Collection+JSON Server Layer 7 Confidential 65
  • 66.
    Collection+JSON Server Layer 7 Confidential 66
  • 67.
    Collection+JSON Server Layer 7 Confidential 67
  • 68.
    Collection+JSON Client Code Layer 7 Confidential 68
  • 69.
    Collection+JSON Client Code Layer 7 Confidential 69
  • 70.
    Collection+JSON Client Code Layer 7 Confidential 70
  • 71.
    Collection+JSON Client App Layer 7 Confidential 71
  • 72.
    Collection+JSON Client App Layer 7 Confidential 72
  • 73.
    Collection+JSON In the wild… Layer 7 Confidential 73
  • 74.
    Collection+JSON  Nokia Research- Live Mixed Reality - Vlad Stribu  “[Collection+JSON] … allows us to develop authoring tools that have the ability to self-adapt the user interface to the usage context.” Layer 7 Confidential 74
  • 75.
    Collection+JSON  Nokia Research- Live Mixed Reality - Vlad Stribu  “Collection+JSON was close enough to what we were looking for…”  “Most important factor that influenced our decision was the community around this format…” Layer 7 Confidential 75
  • 76.
    Collection+JSON  CloudApp –Larry Marburger  “CloudApp allows you to share images, links, music, videos and files.”  “[Due to developer team changes] we had some setbacks with the Mac app and subsequently the API. We just started working with another developer who's making amazing progress.” Layer 7 Confidential 76
  • 77.
    Collection+JSON  ember.js –Yehuda Katz  “A framework for creating ambitious applications.”  “By default, it's somewhat repetitive, but that can be addressed…”  “It was straight-forward to extend it with features I needed”  “I am starting to feel like with the number of extensions, I should consider [creating] my own media type.” Layer 7 Confidential 77
  • 78.
    Collection+JSON  Characteristics -Read/Write w/ Templates - Small set of link identifiers - General “List Domain” handler  Benefits - Limited design means simple parser - Servers easy, clients harder - Built-in support for custom domain annotations  Costs - Domain mapping is more difficult - M2M clients limited to pre-declared vocabulary Layer 7 Confidential 78
  • 79.
    Affordance Aspects “So, areall affordances essentially the same?” Layer 7 Confidential 79
  • 80.
    Affordance Aspects “For thepurposes of applying affordances to hypermedia, there are four important aspects to consider” Layer 7 Confidential 80
  • 81.
    Affordance Aspects Safe The HTTPprotocol supports a number of "safe" actions such as HEAD, and GET. Layer 7 Confidential 81
  • 82.
    Affordance Aspects Safe The HTTPprotocol supports a number of "safe" actions such as HEAD, and GET. The HTTP methods PUT, POST, and DELETE are categorized as "unsafe" actions. Layer 7 Confidential 82
  • 83.
    Affordance Aspects Idempotent When anHTML:FORM element has the METHOD property set to "get" it represents an idempotent action. Layer 7 Confidential 83
  • 84.
    Affordance Aspects Idempotent When anHTML:FORM element has the METHOD property set to "get" it represents an idempotent action. When the same property is set to "post" the affordance represents a non-idempotent action. Layer 7 Confidential 84
  • 85.
  • 86.
    Affordance Aspects Mutability HTML:FORM affordsmutability HTML:LINK is immutable Layer 7 Confidential 86
  • 87.
    Affordance Aspects Transclusion HTML:IMG affordstransclusion Layer 7 Confidential 87
  • 88.
    Affordance Aspects Transclusion HTML:IMG affordstransclusion HTML:A does not Layer 7 Confidential 88
  • 89.
    Affordance Aspects However, thissingle affordance is not very usable. Layer 7 Confidential 89
  • 90.
    Affordance Aspects Media types should be usable Layer 7 Confidential 90
  • 91.
    Affordance Aspects Messages should be usable Layer 7 Confidential 91
  • 92.
    Affordance Aspects APIs should be usable Layer 7 Confidential 92
  • 93.
    ALPS for HTML Design #3: Aspects, Factors, Abstractions Layer 7 Confidential 93
  • 94.
    ALPS for HTML ALPS profile URI  First designs in early 2011 (not registered)  “The purpose of Application-Level Profile Semantics (ALPS) is to document the application-level semantics of a particular implementation.”  “The example profile here contains details on customizing the XHTML media type for a specific application domain: Micro-blogging.” Layer 7 Confidential 94
  • 95.
    ALPS for HTML ALPS profile URI  Multiple parties building their own client or server applications without seeing each other's work or accessing a running "reference" implementation.  Developers are expected to rely on the constraints and definitions found in this document (and the referenced RFCs) as the sole instruction. Layer 7 Confidential 95
  • 96.
    ALPS for HTML Messages Layer 7 Confidential 96
  • 97.
    ALPS for HTML Messages Layer 7 Confidential 97
  • 98.
    ALPS for HTML Messages Layer 7 Confidential 98
  • 99.
    ALPS for HTML ServerCode Layer 7 Confidential 99
  • 100.
    ALPS for HTML ClientCode Layer 7 Confidential 100
  • 101.
    ALPS for HTML ClientApp Layer 7 Confidential 101
  • 102.
    ALPS for HTML ClientBot Layer 7 Confidential 102
  • 103.
    ALPS for HTML ClientBot Layer 7 Confidential 103
  • 104.
    ALPS for HTML ClientBot Layer 7 Confidential 104
  • 105.
    ALPS for HTML “Inthe wild…” Layer 7 Confidential 105
  • 106.
    ALPS for HTML Rstat.us– Carol Nichols  “There are two things that make rstat.us special: simplicity and openness.”  “[S]ince we already have a full-functioning end-user facing site, the ALPS microblogging spec means adding a few attributes rather than having to maintain a totally separate API interface.”  “The current way of presenting the ALPS spec is [too] flat.” Layer 7 Confidential 106
  • 107.
    ALPS for HTML Rstat.us– Carol Nichols Layer 7 Confidential 107
  • 108.
    ALPS for HTML Rstat.us– Carol Nichols Layer 7 Confidential 108
  • 109.
    ALPS for HTML Characteristics - Domain Semantics Only - Media-type agnostic  Benefits - Focused on problem domain - Treats “pages” as the “API”  Costs - Very abstract model - Tough to document - Seems “over complex” esp. for M2M cases Layer 7 Confidential 109
  • 110.
    ALPS for HTML “IfHTML is not the only media-type we need…” Layer 7 Confidential 110
  • 111.
    ALPS for HTML “Howdo you choose?” Layer 7 Confidential 111
  • 112.
    Methodology Mapping your domainto HTTP Layer 7 Confidential 112
  • 113.
    Methodology Designing messages isthe primary work Focus on mapping to payloads, not identifiers Survey existing media types first If you can’t find a suitable H-Factor signature match, consider designing your own. Pro Tip: you can always find a match. Layer 7 Confidential 113
  • 114.
    Methodology Start with aformat (XML, JSON, HTML, etc.) You might need to support more than one Don’t assume you can “cross-map” formats easily Pro Tip: you almost always need to support more than one. Layer 7 Confidential 114
  • 115.
    Methodology Select your otherdesign elements as needed Layer 7 Confidential 115
  • 116.
    Methodology Represent State, notObjects Remember both data and transitions Craft lots of messages Pro Tip: you can never have enough messages Layer 7 Confidential 116
  • 117.
    Methodology When you aresure you have: The proper format The right H-Factor signature The correct mapping of domain to messages Sufficent message examples Then, and only then… Layer 7 Confidential 117
  • 118.
    Methodology You can startwriting the code Layer 7 Confidential 118
  • 119.
    Methodology Because… Layer 7 Confidential 119
  • 120.
    Methodology Thecode is only the implementation Layer 7 Confidential 120
  • 121.
    Methodology Thecode is only the implementation The media type is the design. Layer 7 Confidential 121
  • 122.
    Methodology And if youget the design right... Layer 7 Confidential 122
  • 123.
    Methodology Your users willbe able to do things Layer 7 Confidential 123
  • 124.
    Methodology Your users willbe able to do things Layer 7 Confidential 124
  • 125.
    Methodology Your users willbe able to do things you never imagined Layer 7 Confidential 125
  • 126.
    Mike Amundsen The Costsand Benefits of Building Hypermedia APIs (with Node.js) @mamund Layer 7 Confidential 126