6. REpresentational State Transfert
“un style d’architecture pour les systèmes hypermédia distribués, créé par Roy Fielding
Transfert de la représentation “sans état” d’une ressource
en 2000 dans le chapitre 5 de sa thèse de doctorat.”
8. REST n’impose pas un pattern (mvc, poo, ..)
ou un langage de programmation
9. Avec REST, on parle de la (les)
Représentation(s) d’une ressource
10. Mais c’est quoi une ressource ?
Hmm, et c’est quoi
une ressource ?
11. Une ressource est “un media” identifié &
accessible à travers une URI enregistré sur un
serveur
On parle de ressource physique ou abstraite
12. Exemple de ressource:
●
●
●
●
●
●
●
Une image
Une vidéo
Un fichier pdf
Une ligne dans la base de donnée
le résultat d’un match de foot
le derniers billet d’un blog
…..
14. REST #1: client-serveur
La requette (Request)
GET /book/1 HTTP/1.0
Host: fr.wikipedia.org
Content-Type: application/json
Verbe http
L’URI de la ressource
l’entête la plus importante: l’adresse du serveur
Version du protocole http
Le mime type de la requête
15. REST #1: client-serveur
La réponse (Response)
HTTP/1.0 200 OK
Content-Type : text/HTML
Content-Length : 1245
….
Statut de la réponse
Le type de media (mime type)
l’entête : taille de la réponse en octet
Version du protocole http
“Le contenu de la page wiki de
symfony”
“” Le contenu de la réponse
16. Les verbes HTTP populaires
GET
200 (OK). 404 (Not Found), si l’identifiant introuvable ou invalide.
PUT
200 (OK) or 204 (No Content). 404 (Not Found), si l’identifiant introuvable ou invalide
POST
DELETE
404 (Not Found).
200 (OK). 404 (Not Found), si l’identifiant introuvable ou invalide.
19. REST: #4
Une interface uniforme
L'identification
des ressources
représentations
Un message autodescriptif
Hypermédia
comme moteur
d'état de
l'application
23. REST & php natif
$uri = $_SERVER['REQUEST_URI'];
$title = $_GET['title'];
headr('Content-type: text/html');
echo 'L'URI demandée est: ' . $uri;
echo 'La valeur du paramètre "title" est: ' . $title;
24. REST & symfony2
Request
Un framework conçue autour du protocole http
<?php
…
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
class BookController extends Controller
{
public function getBooksAction()
{
$request = Request::createFromGlobals();
$request->query->get('title');
$request->headers->get('content_type');
$request->getMethod();
$response = new Response();
$response->setContent
('<html><body><h1>Voici une liste de
livre</h1></body></html>');
$response->setStatusCode(200);
$response->headers->set('Content-Type',
'text/html');
$response->send();
}
Request access
Response manipulation
25. REST & symfony2
REST recommandation:
Architecturer les URI (les identifiants des ressources)
avant de commencer le développement
26. Fonctionnalité
HTTP Verb
URI
Afficher tous les livres
GET
http://gestbook.com/books
Afficher un livre
GET
http://gestbook.com/book/1
Modifier un livre
POST
http://gestbook.com/book/1
Supprimer un livre
DELETE
http://gestbook.com/book/1