api : l'architecture rest

24
API L’ARCHITECTURE REST FADEL CHAFAI C2S - 2017

Upload: fadel-chafai

Post on 13-Apr-2017

214 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: API : l'architecture REST

APIL’ARCHITECTURE REST

FADEL CHAFAIC2S - 2017

Page 2: API : l'architecture REST

Qu'est-ce qu'une API?Application Programming Interface

Une API est un logiciel qui offre des services à d'autres

logiciels.

Une API spécifie comment un consommateur peut consommer les

services que l'API expose:

- Quels URI’s sont disponibles ?

- Quelles méthodes HTTP peuvent être utilisées avec chaque URI ?

- Quels paramètres de requête elle accepte ?

- Quelles données peuvent être envoyées dans le corps de requête ?

- Ce que le consommateur peut Attendre comme une réponse ?

Page 3: API : l'architecture REST

Pourquoi une API ?

Transformation digitale

ATAWAD : Any time, anywhere, any device

Page 4: API : l'architecture REST

Types d'API

Les API’s Web peuvent être divisées en deux catégories :

● Remote Procedure Call (RPC)

● REpresentational State Transfer (REST)

Page 5: API : l'architecture REST

Remote Procedure Call (RPC)

RPC est généralement caractérisé comme un seul URI sur lequel de

nombreuses opérations peuvent être appelées, généralement

uniquement via POST. Exemples incluent XML-RPC et SOAP.

Habituellement, vous passerez une requête structurée qui inclut le

nom de l'opération à invoquer et tous les arguments que vous

souhaitez transmettre à l'opération, La réponse sera dans un

format structuré.

Page 6: API : l'architecture REST

POST /xml-rpc

Page 7: API : l'architecture REST

Les points à retenir sur RPC

● Une seule Endpoint offre de nombreuses opérations.

● Généralement 2 méthodes HTTP (GET/POST).

● Formats de demande/réponse structuré et prévisible.

● Format de rapport d'erreur structuré et prévisible.

● Documentation structurée des opérations disponibles.

Page 8: API : l'architecture REST

Le WEB n'aime pas RPC

● Vous ne pouvez pas déterminer via l'URI combien de ressources

sont disponibles.

● Manque de cache HTTP, incapacité d'utiliser des verbes HTTP

natifs pour les opérations courantes, L'absence de codes de

réponse HTTP pour les rapports d'erreurs nécessite une analyse

des résultats pour déterminer si une erreur s'est produite.

Page 9: API : l'architecture REST

API REST REpresentational State Transfer

Quand on parle du REST on utilise souvent Richardson Maturity

Model pour décrire les règles à respecter lors de la mise en place

d'une API REST.

RMM se compose de quatre niveaux :

● Level 0 : HTTP

● Level 1 : Resources

● Level 2 : Verbes et en-têtes HTTP

● Level 3 : Hypermedia Controls

https://martinfowler.com/articles/richardsonMaturityModel.html

Page 10: API : l'architecture REST

Richardson Maturity Model

Level 0

Il faut HTTP comme mécanisme de transport.

Permet l’utilisation des URIs pour désigner des ressources

uniques, des Verbes HTTP, possibilité de spécifier et de retourner

plusieurs types de média, ou de lier des ressources.

Page 11: API : l'architecture REST

Richardson Maturity Model

Level 1

Utilisation des URI (R = Resource) pour désigner les ressources

individuelles comme des services.

/users, /users/123,

/customers , /customers/456, /customers/456/orders

Page 12: API : l'architecture REST

Richardson Maturity Model

Level 2

Utilisation des verbes et en-têtes HTTP pour les interactions

avec les ressources

● GET, POST, PUT, PATCH, DELETE, OPTIONS

● Accept, Content-Types, Authorization, If-Match ,

Access-Control-Allow-Methods ...

GET /users HTTP/1.1 Content-Type: application/json

Authorization Basic ZmFkZWw6e1NIQX0rQTZSZldqSXRxVmNtNFZiY0UyVHhxYzY3RU09

Page 13: API : l'architecture REST

Méthode HTTP PATCH

Page 14: API : l'architecture REST

Richardson Maturity Model

Level 3

Hypermédia comme moteur

d'application (HATEOAS : Hypertext

As The Engine Of Application State),

la ressource indique comment accéder

aux autres ressources et Quelles

sont les actions possibles sur la

ressource.

Liée les ressources entre elles à

travers des lien HAL

Page 15: API : l'architecture REST

Autres concepts

● HTTP Status Codes

● Négociation de contenu

● Cross-domain

Page 16: API : l'architecture REST

HTTP Status Codes

● 200 – OK● 201 Created● 301 Moved Permanently● 400 Bad Request● 403 Forbidden● 404 Not Found● 500 Internal Server Error● 503 Service Unavailable

http://www.ietf.org/assignments/http-status-codes/http-status-codes.xmlhttp://www.restapitutorial.com/httpstatuscodes.html

Page 17: API : l'architecture REST

Négociation de contenu

Il est conseillé de gérer à minima 2

formats: JSON et XML, l’API pourra

distribuer les ressources au format

JSON, mais dans les cas où la requête

spécifie en premier lieu « Accept:

application/xml », les ressources

seront fournis au format XML.

Client : Accept: application/json

API : Content-type : application/json

Page 18: API : l'architecture REST

Cross-domain

Lorsqu'une application (JavaScript SPA) interroge une API sur un domaine

différent, par exemple :

https://myapp.com

https://api.myapp.com

Une bonne pratique consiste à utiliser le protocole CORS qui est le

standard HTTP.

La mise en oeuvre de CORS coté serveur consiste à ajouter quelques

directives sur les serveurs HTTP (Nginx/Apache/Nodejs…).

Coté client le navigateur effectuera avant chaque requête

GET/POST/PUT/PATCH/DELETE une requêtes HTTP avec le verbe OPTIONS.

Page 19: API : l'architecture REST
Page 20: API : l'architecture REST

Sécuriser une API REST

● SSL

● OAuth2

● JWT

Page 21: API : l'architecture REST

REST & RESTFul

● REST est un style architecture

● RESTFUL c’est une application “full of REST”

Page 22: API : l'architecture REST

Les Géants du Web ?

Page 23: API : l'architecture REST

API REST en 30s

https://github.com/typicode/json-server

http://codingthesmartway.com/create-a-rest-api-with-json-server/

Page 24: API : l'architecture REST

?