reusable libraries for hypermedia clients: mike amundsen fluent conference speaking session

27
1 Reusable Libraries for Hypermedia Clients Mike Amundsen, Director of Architecture CA / Layer 7 Technologies @mamund

Upload: ca-api-management

Post on 10-May-2015

1.407 views

Category:

Technology


0 download

DESCRIPTION

What if you could create an app using an existing library that already understood a hypermedia format? What if you didn’t need to sweat low-level protocol details and could focus on the UI and the object model supplied by the server? What if this was all done via a standardized hypermedia API that could automatically adjust in small ways over time without requiring new client code or redeployment? What is the same library worked with multiple servers? Multiple APIs? Based material from the new book “RESTful Web APIs”, this talk walks you through the creation of a great UI for a Collection+JSON media type API and then shows how minor changes on the server are automatically handled by the client without rewrites or redeploys. The same library can even used for different APIs with the same smooth results. Reusable libraries for hypermedia clients is a reality.

TRANSCRIPT

Page 1: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

1

Reusable Libraries for Hypermedia Clients

Mike Amundsen,Director of ArchitectureCA / Layer 7 Technologies@mamund

Page 2: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

2

Mike Amundsen

Author, Web Architect, Presenter

Building Hypermedia APIs with HTML5 and Node, 2011

RESTful Web APIs (w/ Leonard Richardson), 2013

Page 3: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

3

Reusable

Page 4: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

4

Reusable Data Models are Hard

Page 5: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

5

Reusable UIs are Hard

Page 6: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

6

Reusable

What’s left to re-use?

Page 7: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

7

Reusable Middleware

Page 8: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

8

Reusable Middleware on the Server

Apache/IIS/nodejs

Business Components

Web Services

Page 9: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

9

Reusable Middleware on the Server

Most server middleware is focused on “handling data requests”

Page 10: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

10

Reusable Middleware on the Client

JQuery

Bootstrap

Emberjs

Page 11: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

11

Reusable Middleware on the Client

Most client middleware is focused on “handling user requests”

Page 12: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

12

Reusable Middleware on ….

We need middleware focused on “network requests”

Page 13: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

13

Network Requests

The data

The actions

The message

Page 14: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

14

Reusable Middleware for the Network

Page 15: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

15

Reusable Middleware for the Network

Let’s build some reusable middleware for the network.

Page 16: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

16

Reusable Middleware for the Network

Let’s build a hypermedia library.

Page 17: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

17

Hypermedia Clients

Hypermedia clients are different…

Page 18: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

18

Hypermedia Clients are Different

Don’t code the problem, code the message

Don’t memorize details at build time

Recognize them at run time

Design to react, not dictate

Page 19: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

19

Process Steps

Select a media type (Collection+JSON)

Create the library (client-side JS)

Build a Client app (Cj Explorer)

Page 20: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

20

Select a Media Type

Page 21: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

21

Create the library

Learn about RFC2119 words

Implement all the MUSTS

Implement as many SHOULDs as you can

Implement the MAYs, if you are able

Page 22: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

22

Hypermedia Libraries

Let’s look at the code…

Page 23: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

23

Maintaining Hypermedia Libraries

Similar to SDKs

Language Support

Stay in tune w/ the spec

Page 24: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

24

Reusable Libraries for Hypermedia Clients

Lots of media types to support

- HAL

- Cj

- Siren

- JASON-API

- Mason

- UBER

Page 25: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

25

Reusable Libraries for Hypermedia Clients

Reusability at the network level

Spec-reading skills

Similar to SDKs

Page 26: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

26

Reusable Middleware for the Network

Let’s build hypermedia libraries!

Page 27: Reusable Libraries for Hypermedia Clients: Mike Amundsen Fluent Conference Speaking Session

27

Reusable Libraries for Hypermedia Clients

Mike Amundsen,Director of ArchitectureCA / Layer 7 Technologies@mamund