Mes diapositives sur REST. Il s'agit de mon interprétation de ce que REST est devenu avec les années. J'essaie de faire le lien avec SOAP, lorsque possible (mais le thème principal n'est pas SOAP vs RESTful HTTP).
Mes diapositives sur REST. Il s'agit de mon interprétation de ce que REST est devenu avec les années. J'essaie de faire le lien avec SOAP, lorsque possible (mais le thème principal n'est pas SOAP vs RESTful HTTP).
Flex, une techno RIA incontournable pour les futures app web ?GreenIvory
La technologie Adobe Flex est aujourd'hui reconnue comme une des solutions les plus productives pour développer rapidement des applications de type RIA (Rich Internet Applications). Le succès de cette technologie repose sur deux notions fondamentales : la portabilité et l’interopérabilité. Cela fait deux ans que nous utilisons la technologie Flex. Je viens partager avec vous mes retours d'expériences concernant le développement des applications RIA basées sur Adobe Flex.
Ahmed El Houari
Un retour d'expérience concernant l'implémentation d'une nouvelle API RESTful pour exposer du contenu JCR au sein d'une installation Jahia Digital Factory.
Introduction aux Technologies Web élaborée par Marouan OMEZZINEMarouan OMEZZINE
Une introduction / ébauche aux technologies Web (Web, évolution, web 2.0, php, ajax...) faite dans le cadre des formations inter-membres du club Junior ENSI (http://www.junior-ensi.org/) de l'école nationale des sciences de l'informatique (http://www.ensi.rnu.tn/).
Les apports d'HTML5 pour l'interopérabilité des applications géospatialesGaëtan LAVENU
Cette présentation (réalisées dans le cadre des Rencontres Decryptagéo 2014) parcours les évolutions proposées par HTML 5 et ce quelles apportent en terme d'interopérabilité pour les applications géospatiales. A travers des illustrations concrètes exploitant notamment les technologies HTML5/JavaScript ArcGIS d'Esri.
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...Ouadie LAHDIOUI
D’année en année, les utilisateurs souhaitent voir les données de leurs applications évoluer en temps réel quelque soit la nature de l'application !!
Malheureusement, le mode de communication HTTP classique a montré ses limites en termes d'interactions même que AJAX a permis quelques améliorations en terme de rafraîchissement à la volée.
Je vous invite à découvrir la super spécification Java (JSR 356), le nouveau protocole WebSocket (RFC 6455) et un panel technologique super intéressant
Flex, une techno RIA incontournable pour les futures app web ?GreenIvory
La technologie Adobe Flex est aujourd'hui reconnue comme une des solutions les plus productives pour développer rapidement des applications de type RIA (Rich Internet Applications). Le succès de cette technologie repose sur deux notions fondamentales : la portabilité et l’interopérabilité. Cela fait deux ans que nous utilisons la technologie Flex. Je viens partager avec vous mes retours d'expériences concernant le développement des applications RIA basées sur Adobe Flex.
Ahmed El Houari
Un retour d'expérience concernant l'implémentation d'une nouvelle API RESTful pour exposer du contenu JCR au sein d'une installation Jahia Digital Factory.
Introduction aux Technologies Web élaborée par Marouan OMEZZINEMarouan OMEZZINE
Une introduction / ébauche aux technologies Web (Web, évolution, web 2.0, php, ajax...) faite dans le cadre des formations inter-membres du club Junior ENSI (http://www.junior-ensi.org/) de l'école nationale des sciences de l'informatique (http://www.ensi.rnu.tn/).
Les apports d'HTML5 pour l'interopérabilité des applications géospatialesGaëtan LAVENU
Cette présentation (réalisées dans le cadre des Rencontres Decryptagéo 2014) parcours les évolutions proposées par HTML 5 et ce quelles apportent en terme d'interopérabilité pour les applications géospatiales. A travers des illustrations concrètes exploitant notamment les technologies HTML5/JavaScript ArcGIS d'Esri.
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...Ouadie LAHDIOUI
D’année en année, les utilisateurs souhaitent voir les données de leurs applications évoluer en temps réel quelque soit la nature de l'application !!
Malheureusement, le mode de communication HTTP classique a montré ses limites en termes d'interactions même que AJAX a permis quelques améliorations en terme de rafraîchissement à la volée.
Je vous invite à découvrir la super spécification Java (JSR 356), le nouveau protocole WebSocket (RFC 6455) et un panel technologique super intéressant
Support utilisé dans le cadre du cours destiné à initier des étudiants en école de commerce au développement d’applications Web. Ce cours leur fera découvrir les fondamentaux du développement pour le Web. Ils auront ainsi l’opportunité d’utiliser des outils modernes et des technologies de pointe pour concevoir leurs applications et les déployer dans le Cloud.
En plus de coder dans un langage incompréhensible pour les non-initiés, les développeurs ont imaginé un jargon qui leur est hermétique…
Vous êtes en relation avec des développeurs et vous vous sentez parfois perdus ? Vous soupçonnez vos équipes techniques de délibérément employer des termes ou des concepts que vous ne comprenez pas ? Reprenez la main !
Ce support explique les concepts de bases du principe de l'inversion de contrôle et d'injections des dépendances.
Les concepts les plus importants à comprendre par les futurs ingénieurs du génie Logiciel.
Vous souhaitez moderniser votre existant ou consolider l’utilisation des nouvelles technologies sur votre IBM i ?
Cette session vous aidera à choisir la bonne technologie pour vos besoins de modernisation, au travers d’un comparatif Node.js versus PHP :
Environnement serveur
Philosophie de développement
Ecosystèmes
Performances (au travers d’un benchmark sur POWER9)
S18 db2 web query comment partir de zeroGautier DUMAS
Dans cette session, le focus sera fait sur les différentes étapes à suivre, de l’installation jusqu’aux premiers graphiques et tableaux de bord, pour démarrer simplement et rapidement un projet décisionnel sur IBM i avec DB2 Web Query.
S55 db2 web query pour les administrateurs ibm iGautier DUMAS
DB2 Web Query est LA solution de Business Intelligence sur IBM i, qui exploite et valorise les données métier stockées dans DB2. Mais saviez-vous que vous pouviez profiter de la puissance de l’outil combiné aux services IBM i (SQL as a Service) pour monitorer/analyser votre système IBM i ? Cette session présentera des exemples concrets d’analyse du système au travers de rapports, graphiques et tableaux de bord DB2 Web Query, que vous pourrez utiliser sur vos partitions avec ou sans adaptation.
S28 db2 web query - analytique et mobilitéGautier DUMAS
Les rapports produits par DB2 Web Query peuvent être intégrés dans une stratégie de mobilité. Cette session présente les technologies disponibles et les stratégies de mise en oeuvre :
- Mode connecté / déconnecté ?
- Les rapports actifs
- Les favoris mobiles
- Navigateur ou application ?
- Les Web Services
S21 les dernières nouveautés php sous ibm i (zend server 8.5 et zend studio...Gautier DUMAS
Voici les nouveautés de l'environnement PHP sur IBM i qui vont améliorer la productivité des développeurs (gain de temps et qualité du code).
Parmi ces nouveautés, nous découvrirons la nouvelle interface du Zend Server, les novueaux outils de débogage (Z-Ray, Z-Ray Live!, URL Insight) ainsi que l'intégration du Zend Studio dans l'environnement IBM i.
Le point sera fait sur le futur de PHP sur IBMi : PHP7. Qu'est ce qu'apporte cette nouvelle version comment se préparer à la migration avec Zend Studio 13 ?
L'IA connaît une croissance rapide et son intégration dans le domaine éducatif soulève de nombreuses questions. Aujourd'hui, nous explorerons comment les étudiants utilisent l'IA, les perceptions des enseignants à ce sujet, et les mesures possibles pour encadrer ces usages.
Constat Actuel
L'IA est de plus en plus présente dans notre quotidien, y compris dans l'éducation. Certaines universités, comme Science Po en janvier 2023, ont interdit l'utilisation de l'IA, tandis que d'autres, comme l'Université de Prague, la considèrent comme du plagiat. Cette diversité de positions souligne la nécessité urgente d'une réponse institutionnelle pour encadrer ces usages et prévenir les risques de triche et de plagiat.
Enquête Nationale
Pour mieux comprendre ces dynamiques, une enquête nationale intitulée "L'IA dans l'enseignement" a été réalisée. Les auteurs de cette enquête sont Le Sphynx (sondage) et Compilatio (fraude académique). Elle a été diffusée dans les universités de Lyon et d'Aix-Marseille entre le 21 juin et le 15 août 2023, touchant 1242 enseignants et 4443 étudiants. Les questionnaires, conçus pour étudier les usages de l'IA et les représentations de ces usages, abordaient des thèmes comme les craintes, les opportunités et l'acceptabilité.
Résultats de l'Enquête
Les résultats montrent que 55 % des étudiants utilisent l'IA de manière occasionnelle ou fréquente, contre 34 % des enseignants. Cependant, 88 % des enseignants pensent que leurs étudiants utilisent l'IA, ce qui pourrait indiquer une surestimation des usages. Les usages identifiés incluent la recherche d'informations et la rédaction de textes, bien que ces réponses ne puissent pas être cumulées dans les choix proposés.
Analyse Critique
Une analyse plus approfondie révèle que les enseignants peinent à percevoir les bénéfices de l'IA pour l'apprentissage, contrairement aux étudiants. La question de savoir si l'IA améliore les notes sans développer les compétences reste débattue. Est-ce un dopage académique ou une opportunité pour un apprentissage plus efficace ?
Acceptabilité et Éthique
L'enquête révèle que beaucoup d'étudiants jugent acceptable d'utiliser l'IA pour rédiger leurs devoirs, et même un quart des enseignants partagent cet avis. Cela pose des questions éthiques cruciales : copier-coller est-il tricher ? Utiliser l'IA sous supervision ou pour des traductions est-il acceptable ? La réponse n'est pas simple et nécessite un débat ouvert.
Propositions et Solutions
Pour encadrer ces usages, plusieurs solutions sont proposées. Plutôt que d'interdire l'IA, il est suggéré de fixer des règles pour une utilisation responsable. Des innovations pédagogiques peuvent également être explorées, comme la création de situations de concurrence professionnelle ou l'utilisation de détecteurs d'IA.
Conclusion
En conclusion, bien que l'étude présente des limites, elle souligne un besoin urgent de régulation. Une charte institutionnelle pourrait fournir un cadre pour une utilisation éthique.
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Laurent Speyser
(Conférence dessinée)
Vous êtes certainement à l’origine, ou impliqué, dans un changement au sein de votre organisation. Et peut être que cela ne se passe pas aussi bien qu’attendu…
Depuis plusieurs années, je fais régulièrement le constat de l’échec de l’adoption de l’Agilité, et plus globalement de grands changements, dans les organisations. Je vais tenter de vous expliquer pourquoi ils suscitent peu d'adhésion, peu d’engagement, et ils ne tiennent pas dans le temps.
Heureusement, il existe un autre chemin. Pour l'emprunter il s'agira de cultiver l'invitation, l'intelligence collective , la mécanique des jeux, les rites de passages, .... afin que l'agilité prenne racine.
Vous repartirez de cette conférence en ayant pris du recul sur le changement tel qu‘il est généralement opéré aujourd’hui, et en ayant découvert (ou redécouvert) le seul guide valable à suivre, à mon sens, pour un changement authentique, durable, et respectueux des individus! Et en bonus, 2 ou 3 trucs pratiques!
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...OCTO Technology
Par Nicolas Bordier (Consultant numérique responsable @OCTO Technology) et Alaric Rougnon-Glasson (Sustainable Tech Consultant @OCTO Technology)
Sur un exemple très concret d’audit d’éco-conception de l’outil de bilan carbone C’Bilan développé par ICDC (Caisse des dépôts et consignations) nous allons expliquer en quoi l’ACV (analyse de cycle de vie) a été déterminante pour identifier les pistes d’actions pour réduire jusqu'à 82% de l’empreinte environnementale du service.
Vidéo Youtube : https://www.youtube.com/watch?v=7R8oL2P_DkU
Compte-rendu :
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO Technology
En cette année 2024 qui s’annonce sous le signe de la complexité, avec :
- L’explosion de la Gen AI
-Un contexte socio-économique sous tensions
- De forts enjeux sur le Sustainable et la régulation IT
- Une archipélisation des lieux de travail post-Covid
Découvrez les Tech trends incontournables pour délivrer vos produits stratégiques.
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...OCTO Technology
par Claude Camus (Coach agile d'organisation @OCTO Technology) et Gilles Masy (Organizational Coach @OCTO Technology)
Les équipes infrastructure, sécurité, production, ou cloud, doivent consacrer du temps à la modernisation de leurs outils (automatisation, cloud, etc) et de leurs pratiques (DevOps, SRE, etc). Dans le même temps, elles doivent répondre à une avalanche croissante de demandes, tout en maintenant un niveau de qualité de service optimal.
Habitué des environnements développeurs, les transformations agiles négligent les particularités des équipes OPS. Lors de ce comptoir, nous vous partagerons notre proposition de valeur de l'agilité@OPS, qui embarquera vos équipes OPS en Classe Business (Agility), et leur fera dire : "nous ne reviendrons pas en arrière".
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
S51 vos projets web services ibm i a l aide de php
1. Université IBM i 2018
16 et 17 mai
IBM Client Center Paris
S51 – Vos projets Web Services IBM i à l’aide de PHP
Gautier DUMAS
Notos
gdumas@notos.fr – 04 30 96 97 31
2. NoToS
Expertise autour de l’IBM i
• Regard moderne
• Sécurité
• Service
– Formation, audit, développement…
PHP sur IBM i avec Zend
• Modernisation
• Web Services…
Développement de progiciels
• Modernisation à valeur ajoutée des IBM i
3
3. Plan de la présentation
Les Web Services (WS)
• Généralités
• SOAP vs REST
• Les formats d’échanges XML et JSON
PHP sur IBM i
• Pourquoi le PHP pour les WS ?
• Le Zend Server
• Intégration des web services dans l’existant IBM i
Exemples concrets de WS en PHP
• Exposer un Web Service REST
• Exposer un Web Service SOAP
• Consommer un web service REST
• Consommer un web service SOAP
4
5. Généralités sur les WS
Un web service est un outil utilisé pour standardiser les échanges de
données entre deux interlocuteurs, potentiellement dans des
environnements hétérogènes.
Il permet de faire communiquer deux machines au travers de TCP/IP en
milieu hétérogène, sans se soucier de l’OS hôte de la machine, ni du
langage de programmation utilisé.
Exemples :
- Une application Windows développée en C# pourra interroger un web service
sur IBM i développé en PHP.
- Un script PHP sur IBM i pourra interroger un web service écrit en JAVA sur un
serveur Linux.
…
Il existe deux grandes familles (deux standards donc) de Web Service :
• SOAP
• REST
6
6. Bien démarrer son projet WS
Pour bien démarrer son projet Web Service, il faut se poser les
questions suivantes :
• Allons nous consommer ou exposer des web services ? (ou les deux ?)
• Allons nous implémenter la norme REST ou la norme SOAP ?
• Quelle technologie allons nous utiliser pour développer ces web services ?
Ces points seront développés dans cette session au travers de 4
exemples en PHP :
• Exposer un web service REST
• Exposer un web service SOAP
• Consommer un web service REST
• Consommer un web service SOAP
7
7. SOAP vs REST
SOAP (initialement acronyme de Simple Object Access Protocol)
Protocole orienté objet bâti sur la norme XML
Il est composé de deux parties :
• Une enveloppe, contenant des information sur le message lui-même afin de
permettre son acheminement et son traitement
• Un modèle de données, définissant le format du message, c’est-à-dire les
informations à transmettre
Initialement défini par Microsoft et IBM, mais est devenu une référence
depuis une recommandation du W3C, utilisée notamment le cadre
d’architecture de type SOA (Service Oriented Architecture).
S’appuie sur les fichiers WSDL, qui font office de contrats de services. Ils
définissent précisément la nature des échanges entre les consommateurs et
les producteurs de web services. C’est un atout indéniable par rapport aux
services de type REST, plus simples à mettre en œuvre mais aussi moins
formalisés, moins cadrés. 8
8. SOAP vs REST
REST (acronyme de Representational State Transfer)
N’est pas un protocole (tel que HTTP), ni un format d’échange
Il définit une architecture qui utilise le protocole HTTP et ses méthodes
associées pour implémenter les web services
Les différents verbes HTTP seront utilisés pour différencier les méthodes à
appeler :
• GET (lecture), PUT (création), POST (modification), DELETE (suppression)
Plus simple à mettre en œuvre (un simple script PHP derrière un serveur
web)
Plus performant que SOAP avec la possibilité de choisir son format
d’échange
Moins normé, et nécessitera donc une communication accrue entre le
producteur et le consommateur (ou l’écriture de documentations associées) 9
9. SOAP vs REST
La norme SOAP sera utilisée lorsque :
• Besoin de règles strictes (cadrées)
• La performance n’est pas un axe majeur
• Le Web Service sera utilisé par un grand nombre de consommateurs
différents (il suffira de leur fournir l’url du WSDL)
La norme REST sera utilisée lorsque :
• Le besoin de structuration est moins important
• Le besoin de performance est majeur
• Plus utilisé pour des constructions d’API autour d’objets
10
10. Les formats d’échanges
Que l’on implémente un WS SOAP ou REST, la question du format
d’échange doit se poser
• En SOAP, le format XML est obligatoirement présent. Bien que nous
puissions utiliser des chaînes JSON, elles seront intégrées dans un
message global XML
• En REST, le choix du format est libre. Nous pouvons même choisir de ne pas
utiliser de format d’échanges…
Le choix du format se fera en fonction :
• des connaissances des développeurs
Ont-ils déjà menés des projets XML ou JSON ?
• des besoins de performances
JSON pour le plus performant car moins lourd sur le réseau
• Des compétences des interlocuteurs
Maitrisent ils plutôt le XML ou le JSON ? 11
11. Les formats d’échanges
XML JSON
eXtensible Markup Language JavaScript Object Notation
Format d’échange utilisé depuis de
nombreuses années (EDI, Echanges
bancaires, SOAP etc…)
Format d’échange plus récent issu du
développement web (très utilisé avec les
web services REST)
Structure verbeuse Structure légère
Stockage dans un stream file (*STMF) ou
dans DB2 (zone XML ou CHAR)
Stockage dans un stream file (*STMF) ou
dans DB2 (zone CHAR)
Lecture et écriture de chaines XML en RPG
ou en PHP
Manipulation et écriture facilité en PHP à
l’aide de fonctions intégrées (json_encode et
json_decode)
12
14. Pourquoi le PHP pour les WS ?
PHP permet d’unifier la technologie et les compétences utilisées pour
tous les projets WS :
• De type REST ou SOAP
• Simples ou complexes (avec authentification, structure d’échanges
complexes …)
• Autant pour consommer qu’exposer des WS
• Permet de manipuler aussi bien le XML que le JSON au travers de fonctions
natives
En natif IBM i, il faudra changer de technologies selon le projet ! (SQL, RPG,
serveur de web services intégré)
Il est facilement accessible aux développeurs IBM i (notamment en
mettant de côté l’aspect interface graphique qui est inutile avec les WS)
Il est complètement intégré depuis plusieurs années sur l’IBM i avec le
Zend Server
15
15. PHP sur IBM i avec le Zend Server
Ecosystème PHP complètement intégré à l’IBM i
Zend Server actuellement en version 9.1 (PHP 7.1)
• Un environnement conçu et testé pour la production avec :
– Les dernières versions stables de PHP
– Mise à disposition des mises à jour
– Un support dédié à la plateforme IBM i
Zend Studio actuellement en version 13.6
• S’appuie sur noyau Eclipse (comme Rdi)
– Nombreux plugIns disponibles
– Interface moderne de développement
16
16. Le Zend Server
17
Monitoring
- Historique intelligent
des incidents
Configuration
avancée
Débogue
Z-Ray & Z-Ray Live !
Zend Debugger -
Logs
Performance
- Code tracing
- Accélérateur de PHP pour
IBM i
- Gestion du cache
Statistiques
• Intégration complète
• Interface graphique
• Interface 5250
• Professionnalisation des
applications PHP
• Accès
17. PHP sur IBM i : exposer des web services
Lorsque le besoin sera d’exposer des web services, en PHP il sera
possible :
• D’interroger la base de données DB2 directement en SQL (connecteur
ibm_db2 en natif en PHP)
• De manipuler des fichiers de l’IFS (fabrications et envois de fichiers PDF,
Excel, Images etc…)
• Mais aussi d’appeler des programmes existants (RPG, CL, COBOL…) au
travers de procédures stockées ou du PHP Toolkit for IBM i
18
18. PHP sur IBM i : consommer des web services
Lorsque le besoin sera de consommer un web service, le script PHP
pourra être appelé :
• Bien évidemment dans les applications web (lors du chargement d’une page,
au click sur un bouton, à la validation d’un formulaire…)
• Mais aussi directement dans les logiques métiers existantes (*PGM RPG,
CL…) à l’aide de l’API QP2SHELL qui permet d’appeler des scripts PHP en
ligne de commandes
• Cette technique est très utilisée pour intégrer des flux web services dans les
applications 5250
• Elle est également utilisée pour planifier l’exécution de clients web services
au travers du WRKJOBSCDE
19
20. Exposer un web service
Objectif : rendre disponible une information ou une fonction pour une
autre application au sein de l’entreprise ou à l’extérieur (Intranet, Site
Web, un client, un fournisseur etc…)
Se poser les bonnes questions :
• Qui va consommer le web service ?
• Combien de méthodes sont à exposer ?
• A quelle fréquence ?
• Quels seront les volumes de données échangés ?
Les réponses à ces questions permettront de faire un choix approprié
entre SOAP et REST
21
21. Exposer un web service (REST) 1
Une fois l’environnement web PHP installé (PHP/APACHE avec le Zend
Server), aucun autre prérequis n’est nécessaire pour développer son
web service REST
En PHP, il faudra commencer par récupérer le verbe HTTP envoyé pour
connaitre la méthode à appeler :
22
// Bloc de code pour identifier le verbe HTTP utilisé par le client
$method = $_SERVER['REQUEST_METHOD'];
if ($method == 'POST') {
if (array_key_exists('HTTP_X_HTTP_METHOD', $_SERVER)) {
if ($_SERVER['HTTP_X_HTTP_METHOD'] == 'DELETE') {
$method = 'DELETE';
} else
if ($_SERVER['HTTP_X_HTTP_METHOD'] == 'PUT') {
$method = 'PUT';
} else {
throw new Exception("Unexpected Header");
}
} else {
$method = 'POST' ;
}
}
22. Exposer un web service (REST) 2
Puis en fonction de la méthode, nous appellerons des fonctions
différentes
23
switch ($method) {
case 'PUT':{
echo 'update => ';
parse_str(file_get_contents('php://input'),$datas);
print_r($datas);
break ;
}
case 'DELETE':{
echo 'delete => ';
parse_str(file_get_contents('php://input'),$datas);
print_r($datas);
break ;
}
case 'POST':{
echo 'insert => ';
print_r($_POST);
break ;
}
case 'GET':{
echo 'select => ';
print_r($_GET);
break;
}
default:
die('Invalid Method '. 405);
break;
}
23. Exposer un web service (REST) 3
case 'GET':{
//Méthode implémentée pour la démonstration
include './config.inc.php';
$cnx = db2_connect(HOST, USR, PWD);
//Initialisation des paramètres
$codeArticle= $_GET['codeArticle'];//'1002';
$QTTE = 0;
$cpro = db2_prepare($cnx,"CALL IBM2016.STOCKP( ? , ? ) ");
db2_bind_param($cpro, 1, 'codeArticle', DB2_PARAM_IN);
db2_bind_param($cpro, 2, 'QTTE', DB2_PARAM_OUT);
if (db2_execute($cpro)) {
$tabRetour = array(
"CODEART"=>$codeArticle,
"QTE"=>$QTTE
);
echo json_encode($tabRetour);
}else {
echo db2_stmt_errormsg();
}
break;
}
24
24. Exposer un web service (SOAP)
Nécessite l’utilisation de l’extension PHP soap disponible en standard
dans le Zend Server sans installation supplémentaire
La première étape pour développer un WS SOAP est la construction du
fichier WSDL qui va décrire les méthodes à appeler pour le
consommateur
Cette étape très importante, peut se faire de plusieurs façons :
• A la main avec un bon éditeur (Zend Studio) : nécessite la connaissance
complète de la syntaxe WSDL
• A l’aide de la classe PHP nusoap qui permet en quelques lignes de code
PHP, de nous générer le WSDL
25
25. Génération du WSDL avec nusoap
26
<?php
// Inclusion de la classe
require './nusoap/lib/nusoap.php';
// Création d'un nouveau serveur SOAP
$serv = new nusoap_server();
// Configuration du WSDL
$serv->configureWSDL("IBM2018", "urn:IBM2018/",
"http://IP_IBMi/IBM2018/WSServerSOAP.php");
// Définition du namespace
$serv->wsdl->schemaTargetNamespace = "http://IP_IBMi/IBM2018/";
26. Génération du wsdl avec nusoap
27
// Enregistrement dans le serveur SOAP de la fonction PHP GetQtyInStock
// et définition de ses paramètres E/S
$serv->register("GetQtyInStock",
array(
"Code_Article" => "xsd:string"
),
array(
"QtyInStock" => "xsd:int"
),
'urn:GetQtyInStock2',
'urn:IBM2018/GetQtyInStock',
'', '', 'Retourne la qte en stock pour un article'
);
// Récupère la requête SOAP entrante
$POST_DATA = file_get_contents("php://input");
// Analyse le XML, exécute la (ou les) fonction(s), et renvoie la réponse au format XML
$serv->service($POST_DATA);
27. Exposer un web service (SOAP)
Une fois le WSDL créé, nous pouvons commencer à développer les
méthodes qui iront, en fonction du besoin, lire/écrire dans DB2.
Ces méthodes devront respecter les paramètres d’Entrée/Sortie qui
auront été déclaré dans le WSDL (bien respecter le nombre et le type
des paramètres échangés).
28
28. Ecriture de la méthode
29
function GetQtyInStock($codeArticle){
include 'config.inc.php';
$cnx = db2_connect(HOST, USR, PWD);
//Initialisation des paramètres
$codeArticle= $codeArticle;//'1002';
$QTTE = 0;
$cpro = db2_prepare($cnx,"CALL IBM2016.STOCKP( ? , ? ) ");
db2_bind_param($cpro, 1, 'codeArticle', DB2_PARAM_IN);
db2_bind_param($cpro, 2, 'QTTE', DB2_PARAM_OUT);
if (db2_execute($cpro)) {
return $QTTE;
}else {
return db2_stmt_errormsg();
}
}
29. Sécurisez vos web services
Le besoin de sécurisation peut varier en fonction de la nature des
données échangées, et de la localisation du consommateur (sur internet
? Sur le réseau local ?)
Sécurisation possible à différents niveaux :
• Au niveau de l’instance web APACHE par SSL afin :
– de crypter les informations qui vont transiter entre le client et le serveur WS
– d’assurer votre identité au consommateur
• Au niveau du script PHP en demandant une authentification (par exemple
par utilisateur / mot de passe)
Au choix et en fonction du projet, la vérification pourra se faire par rapport à un USRPRF de l’IBM i,
un compte du domaine (par connexion LDAP) ou tout autre solution (base de données utilisateurs,
fichier .txt, autre sgbd etc…)
• Au niveau réseau avec la configuration du firewall de l’entreprise
Exemple : Autorisations par IP
• …
30
31. Consommer un web service (REST)
Pour consommer un web service REST simple, nous pouvons utiliser la
fonction PHP file_get_contents
/*
* METHODE 1 : avec file_get_contents
*/
$reponse =
file_get_contents("http://192.168.1.3/IBM/Universite2018/WSServerREST
.php?codeArticle=1002");
echo "<h1>Résultat JSON avec file_get_contents pour l'article
1002</h1>";
echo $reponse."</br>";
32
32. Consommer un web service (REST)
Pour consommer des WS REST plus complexes (authentification,
passage de paramètres autre que GET, …), il est préférable d’utiliser
CURL. CURL est livrée en standard avec le Zend Server sous forme
d’extension.
Les fonctionnalités de CURL peuvent donc être appelées directement en
PHP sans installation supplémentaire
Plus d’infos sur CURL en PHP sur :
http://php.net/manual/fr/ref.curl.php
33
33. Consommer un web service (REST)
/*
* METHODE 2 : avec CURL
*/
$url =
"http://192.168.1.3/IBM/Universite2018/WSServerREST.php?codeAr
ticle=1003";
$client = curl_init($url);
curl_setopt($client, CURLOPT_RETURNTRANSFER, 1);
$reponse = curl_exec($client);
curl_close($client);
echo "<h1>Résultat JSON avec CURL pour l'article 1003</h1>";
echo $reponse."</br>"; 34
34. Consommer un web service (SOAP)
Nécessite l’utilisation de l’extension PHP soap disponible en standard
dans le Zend Server sans installation supplémentaire
35
35. Consommer un web service (SOAP)
36
//Connexion au WSDL
$client = new
SoapClient("http://192.168.1.3/IBM/Universite2018/WSServerSOAP.php?wsdl");
//Affichage des fonctions publiées
echo "<h1>Liste des fonctions publiées dans le WSDL</h1>";
var_dump($client->__getFunctions());
//Appel de la méthode SOAP GetQtyInStock
$reponse = $client-
>__soapCall("GetQtyInStock",array("Code_Article"=>"1002"));
//Affichage du résultat de l'appel
echo "<h1>Résultat avec SoapClient pour l'article 1002</h1>";
echo $reponse."</br>";
36. Merci de votre attention
Pour plus d’informations
gdumas@notos.fr