Chaker ALLAOUI chaker.allaoui@gmail.com WEBSERVICE API REST SYMFONY 2



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

Architecture Orientée Service, JSON et API REST

Introduction. Adresses

4. SERVICES WEB REST 46

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

Cisco Certified Network Associate

Architectures Web Services RESTful

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

Introduction aux «Services Web»

Applications et Services WEB: Architecture REST

Paris Airports - Web API Airports Path finding

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

Alfstore workflow framework Spécification technique

18 TCP Les protocoles de domaines d applications

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Programme ASI Développeur

Mr. B. Benaissa. Centre universitaire Nâama LOGO

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.

Drupal un CMS orienté mé2er. Romain JARRAUD Mathieu GROS

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

Services Réseaux - Couche Application. TODARO Cédric

Les commandes relatives aux réseaux

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

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

The Book for Symfony 2.1

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

«Cachez-moi cette page!»

SSL. Secure Socket Layer. R. Kobylanski janvier version 1.1 FC INPG. Protocole SSL Application avec stunnel

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

MailStore Server 7 Caractéristiques techniques

25 mars. Tutoriel sur Laravel. Préparé par : Lydiane Beaulne-Bélisle. Ceci est un tutorial qui montre comment débuter avec le Framework PHP Laravel.

PHP 4 PARTIE : BASE DE DONNEES

Tunnels et VPN. 22/01/2009 Formation Permanente Paris6 86

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT

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

Programmation Internet Cours 4

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

INTRODUCTION À PYRAMID Gaël Bearstech. Crédits: Blaise Laflamme

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Hébergement de site web Damien Nouvel

Le stockage local de données en HTML5

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

OpenPaaS Le réseau social d'entreprise

Plan. Le système de transfert de fichiers d'internet. Introduction aux systèmes de transfert de fichiers Le protocole FTP.

Les Architectures Orientées Services (SOA)

Tutoriel d installation de Hibernate avec Eclipse

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Ch2 La modélisation théorique du réseau : OSI Dernière maj : jeudi 12 juillet 2007

Le service FTP. M.BOUABID, Page 1 sur 5

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

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

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

Nouveautés de Drupal 8. Léon

Programmation Web. Madalina Croitoru IUT Montpellier

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Catalogue des formations Edition 2015

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

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

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

webmestre : conception de sites et administration de serveurs web 42 crédits Certificat professionnel CP09

1 LE L S S ERV R EURS Si 5

Compte Rendu d intégration d application

LES TECHNOLOGIES DU WEB APPLIQUÉES AUX DONNÉES STRUCTURÉES

Entity API. Alexandre Todorov, Felip Manyer i Ballester. Montpellier, le 17 septembre 2014

Réseaux et protocoles Damien Nouvel

WebSSO, synchronisation et contrôle des accès via LDAP

SSH, le shell sécurisé

Serveurs de noms Protocoles HTTP et FTP

Figure 1a. Réseau intranet avec pare feu et NAT.

RMI le langage Java XII-1 JMF

Cours CCNA 1. Exercices

CAS, la théorie. R. Ferrere, S. Layrisse

as Architecture des Systèmes d Information

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

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

PHP et le Cloud. All rights reserved. Zend Technologies, Inc.

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

Développement d'un logiciel VoIP BlackBerry

Mobile OGSI.NET: Grid Computing on Mobile Devices

CHAPITRE 11. Temps réel Remy Sharp

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

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Mysql. Les requêtes préparées Prepared statements

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

Services sur réseaux. Trois services à la loupe. Dominique PRESENT Dépt S.R.C. - I.U.T. de Marne la Vallée

Haka : un langage orienté réseaux et sécurité

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

Génie Logiciel avec Ada. 4 février 2013

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Application Web et J2EE

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Projet DataCity. Documentation Technique. Version 4

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

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

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Protocole SSH-2.0. Tuan-Tu, TRAN. Janvier 2009

Transcription:

Chaker ALLAOUI chaker.allaoui@gmail.com WEBSERVICE API REST SYMFONY 2

TABLE DES MATIERES Contenu Présentation 1 Technologies 2 Installation des bundles 3 Configuration des bundles 4 Configuration de Symfony 5 Implémentation de GET 6 Implémentation de POST 7 Implémentation de PUT 8 Configuration de la sérialisation 9 Le plan d adressage 12 API REST Method GET 13 API REST Method POST 14 API REST Method PUT 15 Liens utiles 16

Présentation Les WebServices sont un moyen rapide de distribution de l'information entre clients, fournisseurs, partenaires commerciaux et leurs différentes plates-formes. Les services Web sont basés sur le modèle SOA. Un WebService est un composant logiciel identifié par une URI, dont les interfaces publiques sont définies et appelées en XML. Sa définition peut être découverte par d'autres systèmes logiciels. Les WebServices peuvent interagir entre eux d'une manière prescrite par leurs définitions, en utilisant des messages XML portés par les protocoles Internet. Les WebServices fournissent un lien entre applications. Ainsi, des applications utilisant des technologies différentes peuvent envoyer et recevoir des données au travers de protocoles compréhensibles par tout le monde. Les WebServices sont normalisés car ils utilisent les standards XML et HTTP pour transférer des données et ils sont compatibles avec de nombreux autres environnements de développement. Ils sont donc indépendants des plates-formes. C'est dans ce contexte qu'un intérêt très particulier a été attribué à la conception des WebServices puisqu'ils permettent aux entreprises d'offrir des applications accessibles à distance par d'autres entreprises. Cela s'explique par le fait que les WebServices n'imposent pas de modèles de programmation spécifiques. En d'autres termes, les WebServices ne sont pas concernés par la façon dont les messages sont produits ou consommés par des programmes. Cela permet aux vendeurs d'outils de développement d'offrir différentes méthodes et interfaces de programmation au-dessus de n'importe quel langage de programmation, sans être contraints par des standards. Ainsi, les fournisseurs d'outils de développement peuvent facilement différencier leurs produits avec ceux de leurs concurrents en offrant différents niveaux de sophistication. Les WebServices représentent donc la façon la plus efficace de partager des méthodes et des fonctionnalités. De plus, ils réduisent le temps de réalisation en permettant de tirer directement parti de services existants. Page 1

Technologies SYMFONY Symfony est un framework MVC libre écrit en PHP 5 destiné majoritairement aux professionnels du développement. Il fournit des fonctionnalités modulables et adaptables qui permettent de faciliter et d accélérer le développement d'un site web. Version d implémentation: 2.6.7 FOSRESTBUNDLE FOSRestBundle est un bundle qui fournit plusieurs outils pour aider dans la construction d une API REST, il permet : la manipulation de la couche View, génération automatique des routes pour une API REST, il supporte les Listener et ExceptionController. Version d implémentation : dev-master JMSSERIALIZERBUNDLE ce bundle intègre la bibliothèque de serializer dans Symfony2 et permet d'adapter vos données dans un format comme JSON, XML, ou YAML. Version d implémentation: dev-master RESTCLIENT RESTClient est un module de Firefox qui supporte toutes les méthodes HTTP RFC2616 (HTTP/1.1). Version d implémentation : 2.0.3 CURL curl est un outil gratuit en ligne de commande qui permet de télécharger et d envoyer des données sur divers protocoles: DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet et TFTP. Version d implémentation : 7.42.1 Page 2

Installation des bundles COMPOSER.JSON Ajouter dans votre composer.json dans l attribut require la déclaration de deux bundles, comme suit : "friendsofsymfony/rest-bundle": "dev-master", "jms/serializer-bundle": "dev-master" Et lancez la commande «php composer.phar update» pour mettre à jour vos vendors. APPKERNEL.PHP Déclarer vos bundles dans le fichier AppKernel.php de votre dossier app, comme suit : public function registerbundles() $bundles = array( //... new FOS\RestBundle\FOSRestBundle(), new JMS\SerializerBundle\JMSSerializerBundle(), //... Page 3

Configuration des bundles FOSRESTBUNDLE Dans le fichier «app/config/config.yml» vous devez configurer ce bundle comme suit : #app/config/config.yml fos_rest: param_fetcher_listener: true body_listener: true format_listener: true view: view_response_listener: 'force' formats: xml: true json : true templating_formats: html: true force_redirects: html: true failed_validation: HTTP_BAD_REQUEST default_engine: twig routing_loader: default_format: json JMSSERIALIZERBUNDLE Il est possible de configurer les propriétés de la sérialisation de chaque «Modèle» suivant le mapping suivant : @ExclusionPolicy( all ) : Chaque propriété de votre entité sera ignoré lors de la sérialisation. @Expose : Cette propriété sera sérialisée. @VirtualProperty : Cette méthode sera appelée et sérialisée comme propriété virtuelle. Page 4

Configuration de Symfony CONFIGURATION DU FICHIER «ROUTING.YML» #app/config/routing.yml webservice_api: resource: "@YourBundle/Resources/config/routing.yml" prefix: / rest : type : rest resource : "routing_rest.yml" prefix : /api CREATION-CONFIGURATION DU FICHIER «ROUTING_REST.YML» #app/config/routing_rest.yml users : type: rest resource: "YourBundle:UserRest" name_prefix: api_ CREATION-CONFIGURATION DU FICHIER «ROUTING_REST.YML» DANS LE DOSSIER «RESOURCES» DE VOTRE BUNDLE #src/yourbundle//resources/config/routing_rest.yml Rest_User : type : rest resource: "@YourBundle/Resources/config/routing_rest.yml" VERIFICATION DE L ETAT DU SERVEUR Page 5

Implémentation de GET Apres avoir créer votre bundle de WebService, vous devez déclarer vos méthodes pour gérer votre API REST, la première est GET,celle qui permet de récupérer un utilisateur a partir de votre base de données, donc sous le dossier Controller et dans la classe UserRestController vous la définissée comme suivant, ainsi que sa route qui sera automatiquement interpréter par FSORestBundle : @Route("/getUser/username") / public function getuseraction($username) $user = $this->getdoctrine()->getrepository('yourbundle:users') ->findonebyusername($username); if(!is_object($user)) throw $this->createnotfoundexception(); return New JsonResponse(array('Hello ' => $user->getusername(),'your email is ' => $user->getemail(),'your phonenumber is ' =>$user ->getphonenumber(),'you have registred since ' =>$user->getregistredon() )); Information : FOSRestBundle interpète la méthode «getuseraction» pour définir le type de la requêtte HTTP, GET dans le présent cas. Page 6

Implémentation de POST @Route("/addUser") / public function postadduseraction(request $request) if (0 === strpos($request->headers->get('content-type'),'application/json')) $res = $request->getcontent(); $data = json_decode($res, true); $profil = new Users(); $profil->setusername($data['username']); $profil->setpassword($data['password']); $profil->setemail($data['email']); $profil->setregistredon(new \Datetime()); $profil->setphonenumber($data['phonenumber']); $em = $this->getdoctrine()->getmanager(); $em->persist($profil); $em->flush(); $exist = $this->getdoctrine()->getrepository('yourbundle:users') ->findonebyusername($data['username']); if($exist!=null) return New JsonResponse(array('Results'=>$data)); else return New JsonResponse(array('Errors' => 'erreur')); else return New JsonResponse(array("error" => "JSON syntax require")); Information : FOSRestBundle interpète la méthode «postadduseraction» pour définir le type de la requêtte HTTP, POST dans le présent cas. Page 7

Implémentation de PUT @Route("/updateUser/username") / public function putupdateuseraction(request $request) if (0 === strpos($request->headers->get('content-type'),'application/json')) $res = $request->getcontent(); $data = json_decode($res, true); $user = $this->getdoctrine()->getrepository('yourbundle:users')->findonebyusername($data['username']); $user->setpassword($data['password']); $user->setemail($data['email']); $user->setregistredon(new \Datetime()); $user->setphonenumber($data['phonenumber']); $em = $this->getdoctrine()->getmanager(); $em->persist($user); $em->flush(); $exist = $this->getdoctrine()->getrepository('yourbundle:users')->findonebyusername($data['username']); if($exist!=null) return New JsonResponse(array('Results'=>$data)); else return New JsonResponse(array('Errors' => 'erreur')); else return New JsonResponse(array("error" => "JSON syntax require")); Information : FOSRestBundle interpète la méthode «putupdateuseraction» pour définir le type de la requêtte HTTP, PUT dans le présent cas. Page 8

Configuration de la sérialisation JMSSerializerBundle permet d exposer nos méthodes à la sérialisation via des différents formats, ainsi, vous devez exposer vos méthodes qui retourne une valeur à la sérialisation dans votre «Modèle»et seulement ces méthodes, la démarche est la suivante : use FOS\UserBundle\Entity\User as BaseUser; use Doctrine\ORM\Mapping as ORMU; use JMS\Serializer\Annotation\ExclusionPolicy; use JMS\Serializer\Annotation\Expose; use JMS\Serializer\Annotation\Groups; use JMS\Serializer\Annotation\VirtualProperty; Users @ORMU\Table() @ORMU\Entity(repositoryClass="path_to\YourBundle\Entity\UsersRepos itory") @ExclusionPolicy("all") / class Users @var integer @ORMU\Column(name="id", type="integer") @ORMU\Id @ORMU\GeneratedValue(strategy="AUTO") @Expose / private $id; @var string @ORMU\Column(name="username", type="string", length=255) @Expose / private $username; @var string @ORMU\Column(name="password", type="string", length=255) @Expose Page 9

/ private $password; @var string @ORMU\Column(name="email", type="string", length=255) @Expose / private $email; @var \DateTime @ORMU\Column(name="registred_on", type="datetime") @Expose / private $registredon; @var string @ORMU\Column(name="phonenumber", type="string", length=255) @Expose / private $phonenumber; //... Get username @return string @VirtualProperty / public function getusername() return $this->username; //... Get password @return string @VirtualProperty / public function getpassword() return $this->password; //... Page 10

Get email @return string @VirtualProperty / public function getemail() return $this->email; //... Get registredon @return \DateTime @VirtualProperty / public function getregistredon() return $this->registredon; //... Get registeron @return \DateTime @VirtualProperty / public function getregisteron() return $this->registeron; //... Get phonenumber @return string @VirtualProperty / public function getphonenumber() return $this->phonenumber; Page 11

Le plan d adressage PRESENTATION Les routes correspondantes à nos méthodes GET, POST et PUT sont interpréter automatiquement par FOSRestBundle, ainsi nos requêttes sont acheminées via des entêtes correspondantes à chaque HTTP Headers. COMMANDE DE DEBUG DES ROUTES php app/console router:debug grep api_ Page 12

API REST Method GET PRESENTATION La méthode GET retourne une répresentation au format JSON de notre utilisateur présent dans votre base de données, dans le cas contraire la méthode retourne un message d erreur. COMMANDE LINUX curl i http://localhost:8000/api/getuser/username Page 13

API REST Method POST PRESENTATION La méthode POST permet d ajouter un utilisateur dans votre base de données, dans le cas contraire cette méthode retourne une erreur. COMMANDE LINUX curl i X POST H Content-Type:application/json d username : user, password : pwd, email : email@example.com, phonenumber : 11111111 http://localhost:8000/api/adduser/ Page 14

API REST Method PUT PRESENTATION La méthode PUT permet de modifier les paramètres et coordonnées d untilisateur présent dans votre base de données, dans le cas contraire cette méthode retourne une erreur. COMMANDE LINUX curl i X PUT H Content-Type:application/json d username : user, password : new_pwd, email : new_email@example.com, phonenumber : 2222222 2 http://localhost:8000/api/updateuser/username Page 15

Liens utiles SYMFONY https://symfony.com/ FOSRESTBUNDLE https://github.com/friendsofsymfony/fosrestbundle JMSSERIALIZERBUNDLE https://github.com/schmittjoh/jmsserializerbundle RESTCLIENT https://addons.mozilla.org/fr/firefox/addon/restclient/ CURL http://linux.about.com/od/commands/l/blcmdl1_curl.htm Page 16