Developpement Web Lic Pro Web et Mobile REST avec PHP Silex

Documents pareils
4. SERVICES WEB REST 46

Architecture Orientée Service, JSON et API REST

Applications et Services WEB: Architecture REST

Petite définition : Présentation :

Bien architecturer une application REST

Architectures Web Services RESTful

Les Architectures Orientées Services (SOA)

L3 informatique TP n o 2 : Les applications réseau

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Programmation Web. Introduction

Technologies pour Web Services faciles : REST, JSON

Application Web et J2EE

Hébergement de site web Damien Nouvel

Développement des Systèmes d Information

Urbanisation des Systèmes d'information

Devenez un véritable développeur web en 3 mois!

Point sur les solutions de développement d apps pour les périphériques mobiles

Le Web de Données Dan VODISLAV Université de Cergy-Pontoise Master Informatique M2 Plan

Mise en œuvre des serveurs d application

Développement d'un logiciel VoIP BlackBerry

Exploration des technologies web pour créer une interaction entre Mahara et les plateformes professionnelles et sociales

(structure des entêtes)

Vulnérabilités et sécurisation des applications Web

les techniques d'extraction, les formulaires et intégration dans un site WEB

Systèmes répartis. Fabrice Rossi Université Paris-IX Dauphine. Systèmes répartis p.1/49

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

Sécurité des Web Services (SOAP vs REST)

Serveurs de noms Protocoles HTTP et FTP

Introduction aux. services web 2 / 2

Architectures en couches pour applications web Rappel : Architecture en couches

Mandataires, caches et filtres

LICENCE PROFESSIONNELLE

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

ABB personnalise son service client avec la plate-forme en ligne One ABB on the Web Jan Anders Solvik, Håkan Wärdell, Nathan Becker

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

NoSQL. Introduction 1/30. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Paris Airports - Web API Airports Path finding

Proposition d une architecture pour ebay, en mettant l accent sur les notions de scalabilité, de résilience, et de tolérance aux pannes.

Teste et mesure vos réseaux et vos applicatifs en toute indépendance

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

ArcGIS 10.1 for Server

Architectures d'intégration de données

Pratique et administration des systèmes

WebDAV en 2 minutes. Tous ces objectifs sont complémentaires et ils sont atteints grâce au seul protocole WebDAV. Scénarii

Introduction aux «Services Web»

Joomla! Création et administration d'un site web - Version numérique

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Formation en Logiciels Libres. Fiche d inscription

Editeurs de logiciels. Votre guide SMS

«Cachez-moi cette page!»

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

Programmation Internet Cours 4

Supplément de renseignements : Examens d applications et pare-feux d applications web clarifiés Normes : Normes en matière de sécurité des données de

Configurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : et un masque

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

<Insert Picture Here>ApExposé. Cédric MYLLE 05 Février Exposé Système et Réseaux : ApEx, Application Express d Oracle

Oauth : un protocole d'autorisation qui authentifie?

Architectures web/bases de données

SharePoint 2013 Développez en.net pour personnaliser SharePoint (Apps, REST, CSOM et Azure)

Internet of Things Part 1

WordPress, thèmes et plugins : mode d'emploi

NoSQL. Introduction 1/23. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Intégration du Web 2.0 dans les solutions IBM

Stocker des données sur Amazon S3

PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES

SÉCURITÉ POUR LES ENTREPRISES UN MONDE NUAGEUX ET MOBILE. Sophia-Antipolis 01/07/2013 Cyril Grosjean

OFFRE MDB Service & Architecture Technique. MyDataBall Saas (Software as a Service) MyDataBall On Premise

Groupe Eyrolles, 2004, ISBN :

API SMS HTTP REST. Intégrer facilement le service Envoyer SMS Pro avec votre application métier. Version : Révision : 03/09/2014 Page 1/31

Architecture distribuée

OZSSI NORD 4 JUIN LILLE. Conférence thématique: Sécurité des applications

RTE Technologies. RTE Geoloc. Configuration avec Proxy ou Firewall

Proxies,, Caches & CDNs

Formation : WEbMaster

Atelier 1. Portails documentaires : BioLib et Cemadoc

Tests de montée en charge avec Tsung

Jahia. Guillaume Monnette École Ingénieurs 2000 Marne-La-Vallée IR3

Nouveautés de Drupal 8. Léon

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

HTTP HTTP. IUT1 dpt SRC L Isle d Abeau Jean-françois Berdjugin. Introduction et architecture Messages Authentification Conclusion

Programmation Web. Madalina Croitoru IUT Montpellier

Le protocole HTTP. 10 minutes pour comprendre. HTTP/0.9 - Lacunes et limitations HTTP/1.0 HTTP/1.1

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

Solutions d accès sécurisées pour opérer une Market Place Saas multitenante

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Technologies du Web. Ludovic DENOYER - ludovic.denoyer@lip6.fr. Février 2014 UPMC

Transcription:

Developpement Web Lic Pro Web et Mobile 2017 2018 REST td n 5 REST avec PHP Silex Silex, REST, API Exercice 1. Contexte Dans ce TD, on va mettre en place une architecture REST simple entre sur un serveur en PHP codé avec Silex. Le serveur présente les données d une table et un Client riche (ou RIA) en JavaScript permet de les récupérer et des les afficher. REST signifie (Representational State Transfer). Cette architecture permet de réaliser des applications de type onepage en reportant sur le client une bonne partie de la logique métier et en offrant des point d entrée aux clients pour lire des données sur le serveur ou lui en envoyer. Ces données pourront être envoyées en XML ou de plus en plus aujourd hui en JSON : JavaScript Object Notation, c est à dire des objets directement utilisables en JS. On rappelle les définitions : RIA = Rich Internet Application REST = Representational State Transform Logique métier déportée vers le client Tâche principale du serveur : Offrir des services de récupération et de stockage de données Un flux de news pourra ainsi offrir par exemple une ressource du type : /api/news/314159 qui permettra aux clients de récupérer la news numéro 314159 en JSON ou en XML en employant la méthode HTTP GET. Dans cet exemple, la news est ici la ressource ou élément manipulée dans l API. La méthode GET sera employée pour récupérer des éléments individuellement ou par Collections. La méthode POST sera quand à elle employée pour envoyer vers le serveur une collection d éléments. D autres méthodes HTTP pour créer ou modifier (PUT) des éléments ou les effacer (DELETE) seront également disponibles dans l API. Les technologies concurrentes à REST sont XML-RPC et SOAP (Microsoft) REST est une façon moderne de concevoir ce genre de service et possède les avantages suivants : Bonne montée en charge du serveur Simplicité des serveurs (retour aux sources du protocole HTTP) Equilibrage de charge le serveur offre une API les services sont représentés par des URL s donc simplicité et bonne gestion du cache Possibilité de décomposer des services complexes en de multiples services plus simples qui communiquent entre eux informatique/iut Orléans 1

Exercice 2. Principes de REST Les principes de REST ont été théorisés par Roy Fielding dans sa thèse : http://www. ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm : 1. Séparation claire entre Client et Serveur 2. Le client contient la logique métier, le serveur est sans Etat 3. Les réponses du serveur peuvent ou non être mises en cache 4. L interface doit être simple, bien définie, standardisée 5. Le système peut avoir plusieurs couches comme des proxys, systèmes de cache, etc 6. Eventuellement, les clients peuvent télecharger du code du serveur qui s exécutera dans le contexte du client Pour mémoire, une API REST peut offrir les méthodes suivantes : Méthodes HTTP et REST Méthode Rôle Code retour HTTP GET URL pour récupérer un élement 200 GET URL pour récupérer une collection d élements 200 POST URL pour poster une collection d élements 201 DELETE URL pour effacer un élement 200 DELETE URL pour effacer une collection d élements 200 PUT URL pour modifier un élement 200 Mais on peut aussi avoir des erreurs : 400 Bad Request : requête mal formée 404 Not Found : la resource demandée n existe pas 401 Unauthorized : Authentification necessaire pour accéder à la resource. 405 Method Not Allowed : Cette méthode est interdite pour cette resource. 409 Conflict : Par exemple un PUT qui crée une ressource 2 fois 500 Internal Server Error : Toutes les autres erreurs du serveur. Par ailleurs, le serveur REST ne maintient pas d état, les requêtes sont indépendantes les unes des autres. C est un retour aux fondamentaux du protocole HTTP qui n est pas doté de beaucoup de capacités de mémorisation... informatique/iut Orléans 2

Exercice 3. REST avec PHP, Apache et Silex Nous allons maintenant réaliser en PHP l implémentation d un service REST qui exposera les données de la table de contact appellée CARNET utilisée dans les autres exemples. Un contact sera ainsi ainsi accessible à une route du type : /api/v1/contact/12 qui permettra aux clients de récupérer le contact en JSON employant la méthode HTTP GET dans la version 1 de notre API. Dans cet exemple, le contact constitue la ressource manipulée dans notre API. La méthode GET sera employée pour récupérer des éléments individuellement ou par Collections. Routes de notre service REST Méthode Action URI GET Récup. tous les liens /api/v1/ GET Récuperation d un élément /api/v1/contact/id GET Récuperation collection d éléments /api/v1/contact POST Creation d éléments /api/v1/contact DELETE Effacer un élement /api/v1/contact/id PATCH Modification partielle d un élement /api/v1/contact/id PUT Modification d un élement /api/v1/contact/id La route /api/v1/ en GET renverra la liste des URLs des contacts plutôt que la liste de tous les contacts avec tous leurs détails. Ceci permet d avoir un serveur REST auto-documenté où la récupération d une première URL permet en suivant d obtenir la liste des ressources présentes sur le service avec leurs URLs respectives. On pourra également paginer les réponses pour ne pas manipuler trop de données simultanément. Pour assurer le routage simplement nous allons continuer avec Silex : http://silex. sensiolabs.org/ Nous pouvons donc modifier le fichier index.php déjà mis en place comme suit : 1 2 <?php 3 require_once DIR.'/ vendor/ autoload.php'; 4 require_once 'modele.php'; 5 6 $app = new Silex\ Application(); 7 $app['debug']= true; informatique/iut Orléans 3

8 9 $app ->get('/ contact', function () { 10 $content ='<ul >'; 11 $amis= get_all_friends(); 12 foreach ($amis as $ami){ 13 $content.='<li >'.$ami['nom'].'</li >'; 14 } 15 $content.='</ul>'; 16 return $content; 17 }); 18 19 $app ->get('/api/v1', function () { 20 $amis= get_all_friends_links(); 21 return json_encode($amis); 22 }); 23 24 $app ->get('/api/v1/ contact', function () { 25 $amis= get_all_friends(); 26 return json_encode($amis); 27 }); avec une nouvelle méthode dans modele.php : 1 2 <?php 3 function get_all_friends_links() 4 { 5 $connexion = connect_db(); 6 $amis=array(); 7 $sql=" SELECT * from CARNET"; 8 $data=$connexion ->query($sql); 9 while($pers=$data ->fetch(pdo:: FETCH_ASSOC)) 10 { 11 $res=array(); 12 $res['nom'] = $pers['nom']; 13 $res['url']=$_server["request_scheme"].'://'. 14 $_SERVER['HTTP_HOST']. 15 $_SERVER['CONTEXT_PREFIX']. 16 '/silex/api/ contact/'.$pers['id' ]; 17 $amis[] = $res; 18 } informatique/iut Orléans 4

19 return $amis; 20 } La vue de base de notre API renvoie maintenant la liste des liens de nos contacts et quelqu un qui s y connecte pourra décrouvrir par la d autres URLs gérées par notre API. Une bonne API REST se doit d être autodocumentée dans la mesure du possible! Puis complétons notre API REST. informatique/iut Orléans 5