une restful architecture
TRANSCRIPT
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)
http://stateless.co/hal_specification.html
http://hal.codeplex.com/
https://github.com/robdmoore/Hal.PlayAround
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