Une RESTful Architecture

Preview:

Citation preview

Une RESTful Architecture

Communauté .NET Montréal

Une RESTful Architecture

@brisebois runatserver.com

Alexandre Brisebois

Développeur Sénior

Runatserver Montréal

Web ● Touch ● Mobile ● Training

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

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

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é

Une interface uniforme

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

Les different niveaux de REST

1

2 3

0

1

2

3

Ressources

Verbes HTTP

Hypermédia

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

POX (Plain Old XML)

010111010101001010010100100110100100100100010010010101010100100100100100100101111011010010010111011010010101010

1

2

3

RessourcesVerbes HTTP

Hypermédia

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

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

1

2

3

Ressources

Verbes HTTP

Hypermédia

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

Verbes HTTP

GETPOSTPUTDELETEHEADPATCH

Titre présentation

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

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

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

Hypermédia en HTML

Hypermédia en Json

HAL (Hypertext Application Language)

HAL (Hypertext Application Language)

Hypermédia en Json

Hypermédia en XML

HAL (Hypertext Application Language)

Démo

Trouver l’erreur!

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

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

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

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

C’est possible

Une RESTful Architecture

@brisebois runatserver.com

Alexandre Brisebois

Développeur Sénior

Runatserver Montréal

Web ● Touch ● Mobile ● Training

Recommended