-overview of res tful architecture-2

19
overview of RESTful Architecture Jun-Hawn Huh [email protected] Mobile Networking and Computing Lab. Dept. of Electronics, Electrical and Computer Science and Engineering 1

Upload: junhwan-huh

Post on 21-Jan-2018

256 views

Category:

Engineering


1 download

TRANSCRIPT

overview of RESTful Architecture

Jun-Hawn Huh [email protected]

Mobile Networking and Computing Lab. Dept. of Electronics, Electrical and Computer Science and Engineering

1

INDEX

2

1 Introduction

2

3

4

5

REST : design strategy

REST : set of constraints

REST : guidelines for REST interface

Your API is “fully RESTful”?

6 Conclusion

Representational State Transfer ( REST )

Introduction : Architecture

Architecture

an abstraction of the run-time elements of a software systems during some phase of its operation. A system may be composed of many levels of abstraction and many phases of operation, each with its own software architecture.

defined by a configuration of architectural elements—components, connectors, and data—constrained in their relationships in order to achieve a desired set of architectural properties.

3

Abstraction : hiding some of the details of a system through encapsulation in order to better identify and sustain its properties

Elements

Component : A component is an abstract unit of software instructions and internal state that provides a transformation of data via its interface.

Connectors : A connector is an abstract mechanism that mediates communication, coordination, or cooperation among components.

Data : A datum is an element of information that is transferred from a component, or received by a component, via a connector.

Introduction : Design Pattern

Design Pattern A design pattern is a set of guidelines

4

Protocol A protocol is pattern you need to fit exactly VS

Example) House Design

roof width : 15m height : 3m

shape : triangle material : oak tree

doorpull radius: 15cm shape : circle

material : stainless

door width : 1m height : 2m

shape : rectangle material : cherry tree

house pattern

< korean-style house >

< adobe-style house >

< carftsman-style house>

Strict non-strict

Introduction : Hyper -

Hypertext Hypertext is text displayed on a computer display or other electronic devices with references (hyperlinks) to other text which the reader can immediately access, or where text can be revealed progressively at multiple levels of detail

5

Hyper - The English prefix hyper- comes from the Greek prefix "ὑπερ-" and means "over" or “beyond"

h y p e r

Hypermedia Hypermedia, an extension of the term hypertext, is a nonlinear medium of information which includes graphics, audio, video, plain text and hyperlinks. This contrasts with the broader term multimedia, which may include non-interactive linear presentations as well as hypermedia.

Ted-Nelson

- by Ted Nelson

Introduction : Hyper -

6

Hyper Card ( developed by apple )

- HyperCard was originally released in 1987 for $49.95

- First GUI-Browser Mosaic was release in 1993

Find the API using Hypermedia in Hyper Card

- Click the button : call API

- Operations after click the button : sound play, video play, take you to a different card : Hypermedia

- “cards” with links that performed different function

- clicking on link might play a sound, video, take you to a different card

Introduction : REST

7

Representational State Transfer ( REST )

Roy T Fielding- The term “REST” was coined back in 2000 by Roy T Fielding

- Reference Paper : Architectural styles and the design of network-based software architectures

- Software architecture style of the World Wide Web

Why call REST ( Representational State Transfer )?

- Representational : resource is represented by type( XML, JSON, anytype )

- State Transfer: Transmit resource’s state

Roy T Fielding

- Roy Thomas Fieding( born 1965 ), american, computer scientist

- one of the principal author of the HTTP spec

- Transffering Representational State

REST’s goal ?

- Scalability of component interactions

- Genrality of interfaces

- Independent deployment of components

REST : design strategy

8

Two approach to design architecture

1) starting with the nothing

2) start with the system need as a whole

example ) - Draw a Wheel

1) 2)

null

creative ! natural !

9

REST : design strategy

null style

put in here, set of constraints

server - client

stateless

cacheable

layered system

code on demand ( optional )

uniform interface

natural !

constraint for REST interface

identification of resources

Manipulation of resources through these representations

self-descriptive message

Hypermedia as the engine of application state

< Hybrid Style >

REST : set of constraints

10

client - Server

Stateless

A uniform interface separates client from servers.

The client–server communication is further constrained by no client context being stored on the server between requests

client server

request

response interface

independent

client server

request

response

I don’t know who is client !

I don’t care about who is client !

also,

REST : set of constraints

11

cacheableWell-managed caching partially or completely eliminates some client–server interactions, further improving scalability and performance.

layered system

code on demand ( optional )

uniform interface ( important )

A client cannot ordinarily tell whether it is connected directly to the end server, or to an intermediary along the way.

Servers can temporarily extend or customize the functionality of a client by the transfer of executable code.

The uniform interface simplifies and decouples the architecture, which enables each part to evolve independently.

< Process View of a REST-based Architecture >

REST : set of constraints

12

client server

call getWeather( “Busan” )

client server

Get ( “/weather/busan" )

RPC ( Remote Procedure Call )

REST

return “Sunny”

call getWeather()

function locally

return “Sunny”

weather busan

sunny seoul

rainy

return representational state

REST : constraint for REST interface

13

Identifiaction of resources

Manipulation of resources through these representations

Individual resources are identified in requests, for example using URIs in web-based REST systems. The resources themselves are conceptually separate from the representations that are returned to the client.

When a client holds a representation of a resource, including any metadata attached, it has enough information to modify or delete the resource.

XML, JSON, vnd.onem2m-res+xml, vnd.onem2m-res+json …

REST : constraint for REST interface

14

self-descriptive message

Each message includes enough information to describe how to process the message

client server

request

response

self-descriptive message

contents

I don’t w

anna see y

ou( conten

ts )

but, I kn

ow you alre

ady

headers

REST : constraint for REST interface

15

Hypermedia As The Engine Of Application State ( HATEOAS )

{ “id” : “1” “subject” : “Hello World!” “created” : “2015-01-01T12:00:00.000” “author” : “junhwan” }

{ “id” : “1” “subject” : “Hello World!” “created” : “2015-01-01T12:00:00.000” “author” : “junhwan” “comments-href” : “/book/1/comments”, “profile-href” : “/profiles/junhwan” “recommend-href” : /book/1/recommend” }

{ “id” : “1” “subject” : “Hello World!” “created” : “2015-01-01T12:00:00.000” “author” : “junhwan” “links” : [

{ “href” : “/book/1” “rel” : “self”

}, { “href” : “/book/1/comments”” “rel” : “comments”

}, { “href” : “/profiles/junhwan “rel” : “profile”

}, { “href” : “/book/1/recommend” “rel” : “recommend”

}, }

close to

hypermedia API

REST : Your API is “fully RESTful”?

16

The Richardson Maturity Model

level 0

level 1

level 2

level 3

close

to “f

ully

RES

Tful

one URI

Indivisual URIs for each resource

Uses the right HTTP method, status codes

Response have links that the clients can use ( HATEOAS )

- SOAP, XML RPC, POX - Single URI

- URI design - Many URIs, Single operation

- Many URIs, many operation - CRUD services

- Level2 + Hypermedia - RESTful Services

Conclusion

17

- study REST’s set of constraints - study meaning of “fully RESTful”

Future

- implement “fully RESTful” system - HATEOAS - codeOnDemand - …

Question

- How authentication in RESTful web service ? - using HTTP is the best for RESTful?

Thank you

18

Reference

19

[1] Fielding, Roy Thomas. Architectural styles and the design of network-based software architectures. Diss. University of California, Irvine, 2000.

[2] https://www.youtube.com/watch?v=qHbTE3qvUsQ , online lecture about REST, koushik

[3] http://blogs.mulesoft.com/dev/api-dev/api-best-practices-hypermedia-part-1/ , Mike Stowe

[4] Barish, Greg, and Katia Obraczke. "World wide web caching: Trends and techniques." IEEE Communications magazine 38.5 (2000): 178-184.

[5] http://roy.gbiv.com/untangled/about, Roy T. Fielding’s private blog

[6] https://en.wikipedia.org/wiki/Representational_state_transfer, wikipedia