une restful architecture

31
Une RESTful Architecture Communauté .NET Montréal

Upload: brisebois

Post on 14-May-2015

247 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Une RESTful Architecture

Une RESTful Architecture

Communauté .NET Montréal

Page 2: Une RESTful Architecture

Une RESTful Architecture

@brisebois runatserver.com

Alexandre Brisebois

Développeur Sénior

Runatserver Montréal

Web ● Touch ● Mobile ● Training

Page 3: Une RESTful Architecture

REpresentational state transfer

N’est PAS• RPC

oREST n’est pas pour faire des appels a des méthodes via le réseau

• HTTPo Même si vous utiliser HTTP comme

protocole de communication, il se peut que votre service ne soit pas RESTful

• URIsoLes URIs propres ne sont pas un prérequis

de REST

Page 4: Une RESTful Architecture

BénéficesPortabilitéScalabilityEvolvabilityVisibilitéFiabilitéEfficacitéPerformanceManageability

Page 5: Une RESTful Architecture

Forces de RESTPeut palier au manque de fiabilité du réseau

Peut réduire les temps de latence

Peut réduire la bande passante utiliser

Peut simplifier la sécurité

Résiste a une Topologie du réseau changeante

Peut distribue l’administration

Peut réduire les couts de transport

Peut vivre dans un réseaux non hétérogènes

Peut réduit Complexité

Page 6: Une RESTful Architecture

Une interface uniforme

Identification de ressources Manipulation via représentations Message Auto-descriptifsHypermedia as the engine of application state (HATEOAS)

Page 7: Une RESTful Architecture

Les different niveaux de REST

1

2 3

0

Page 8: Une RESTful Architecture

1

2

3

Ressources

Verbes HTTP

Hypermédia

POX0Le chemin vers REST tel que décris par Leonard Richardson

Page 9: Une RESTful Architecture

POX (Plain Old XML)

010111010101001010010100100110100100100100010010010101010100100100100100100101111011010010010111011010010101010

Page 10: Une RESTful Architecture

1

2

3

RessourcesVerbes HTTP

Hypermédia

POX0Le chemin vers REST tel que décris par Leonard Richardson

Page 11: Une RESTful Architecture

Ressources

http://localhost/api/taskshttp://localhost/api/tasks/(?id)http://localhost/api/tasks/backloghttp://localhost/api/tasks/in-progresshttp://localhost/api/tasks/completed

Mappe un concept nommé à un ensemble d'entités dans le tempsRelation plusieurs à plusieurs entre les concepts et les entitésLa relation peut être stable dans le temps, ou il peut changer fréquemment

Page 12: Une RESTful Architecture

1

2

3

Ressources

Verbes HTTP

Hypermédia

POX0Le chemin vers REST tel que décris par Leonard Richardson

Page 13: Une RESTful Architecture

Verbes HTTP

GETPOSTPUTDELETEHEADPATCH

Titre présentation

Page 14: Une RESTful Architecture

A REST API should be entered with noprior knowledge beyond the initial URI(bookmark) and set of standardizedmedia types that are appropriate for theintended audience (i.e., expected to beunderstood by any client that might use theAPI). From that point on, all applicationstate transitions must be driven byclient selection of server-providedchoices that are present in the receivedrepresentations or implied by the user’smanipulation of those representations. Thetransitions may be determined (or limitedby) the client’s knowledge of media typesand resource communication mechanisms,both of which may be improved on-the-fly(e.g., code-on-demand).~ Roy Fielding

Page 15: Une RESTful Architecture

1

2

3

Ressources

Verbes HTTP

Hypermédia

0 POX

Seulement le niveau 3 peut être considérer comme REST

Le chemin vers REST tel que décris par Leonard Richardson

Page 16: Une RESTful Architecture

HypermédiaEst la partie de REST qui est le plus souvent oublierRéduit le couplage entre le server et le client en réduisant le nombre de URI connue par le clientL’hypermédia est l’aspet qui différencie REST de RPC

Page 17: Une RESTful Architecture

Hypermédia en HTML

Page 18: Une RESTful Architecture

Hypermédia en Json

Page 19: Une RESTful Architecture

HAL (Hypertext Application Language)

Page 20: Une RESTful Architecture

HAL (Hypertext Application Language)

Page 21: Une RESTful Architecture

Hypermédia en Json

Page 22: Une RESTful Architecture

Hypermédia en XML

Page 24: Une RESTful Architecture

HAL (Hypertext Application Language)

Démo

Page 25: Une RESTful Architecture

Trouver l’erreur!

Page 26: Une RESTful Architecture

Characteristics recherché

Ils suivent les normesLe style est constant et prévisibleLeur URI font ce qu'ils disentIl retourne des Code HTTP pour communiquer des erreurs

Page 27: Une RESTful Architecture

Characteristics recherché

Il ne maintienne pas d’état et il sont rapideLes PUTs sont omnipotentIls retournent uniquement les données nécessairesIls implémenter la pagination pour les longues listes

Page 28: Une RESTful Architecture

Characteristics recherché

Ils sont entièrement testés Leurs interfaces sont bien documentéesLeur documentation est toujours tenu à jourIdéalement, ils retournent des messages légers comme json ou protobuf

Page 29: Une RESTful Architecture

Characteristics recherché

Ils sont versionnésLimiter les régression au maximumUne fois qu'un endpoint est publié, il est préférable de créer un nouveau endpoint que de changer la signature d'un endpoint existant.Les lignes directrices ressemblent fortement à celles du code propre

Page 30: Une RESTful Architecture

C’est possible

Page 31: Une RESTful Architecture

Une RESTful Architecture

@brisebois runatserver.com

Alexandre Brisebois

Développeur Sénior

Runatserver Montréal

Web ● Touch ● Mobile ● Training