Exposer un composant comme un service Web
SCA pour PHP peut générer des fichiers WSDL à partir des annotations dans un composant, ce qui fait qu'il peut être facilement déployé et exposé comme un service Web. Pour fournir à SCA les informations dont il a besoin pour produire le WSDL, il est nécessaire d'ajouter l'annotation @binding.soap dans l'annotation @service et de spécifier les paramètres et les valeurs de retour avec les annotations @param et @return. Ces annotations seront lues quand le fichier WSDL sera produit, et l'ordre et les types des paramètres va déterminer le contenu de la section <schema> du fichier WSDL.
SCA pour PHP produit toujours des fichiers WSDL pour les composants qui exposent des services Web. Notez que cela n'empêche pas les composants de consommer des services Web qui ne sont pas des composants SCA, et qui sont documentés avec des fichiers WDSL qui ne sont pas dans le même format.
Les types scalaires qui peuvent être utilisé dans les annotations @param sont les quatres types scalaires communs de PHP : booléen, entier, nombre décimal et chaîne de caractères. Ils sont simplement transformés en un équivalent au format XML. L'exemple ci-dessous, qui est une implémentation triviale du service StockQuote avec des appels à ConvertedStockQuote illustre l'utilisation de chaîne de caractères et nombre décimal.
Exemple #1 Service StockQuote
<?php
include "SCA/SCA.php";
/**
* Implémentation d'un service distant StockQuote Web.
*
* @service
* @binding.soap
*
*/
class StockQuote {
/**
* Lit une cotation pour un symbole
*
* @param string $ticker Le symbole de l'action
* @return float La cotation de l'action
*/
function getQuote($ticker) {
return 80.9;
}
}
?>
Un fichier WSDL, semblable au document suivant (mais avec une localisation de service autre que 'localhost', probablement) sera généré pour le service :
Exemple #2 Generated WSDL
<?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xsi:type="tDefinitions" xmlns:tns2="http://StockQuote" xmlns:tns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns3="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://StockQuote"> <types> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://StockQuote"> <xs:element name="getQuote"> <xs:complexType> <xs:sequence> <xs:element name="ticker" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="getQuoteResponse"> <xs:complexType> <xs:sequence> <xs:element name="getQuoteReturn" type="xs:float"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </types> <message name="getQuoteRequest"> <part name="getQuoteRequest" element="tns2:getQuote"/> </message> <message name="getQuoteResponse"> <part name="return" element="tns2:getQuoteResponse"/> </message> <portType name="StockQuotePortType"> <operation name="getQuote"> <input message="tns2:getQuoteRequest"/> <output message="tns2:getQuoteResponse"/> </operation> </portType> <binding name="StockQuoteBinding" type="tns2:StockQuotePortType"> <operation name="getQuote"> <input> <tns3:body xsi:type="tBody" use="literal"/> </input> <output> <tns3:body xsi:type="tBody" use="literal"/> </output> <tns3:operation xsi:type="tOperation" soapAction=""/> </operation> <tns3:binding xsi:type="tBinding" transport="http://schemas.xmlsoap.org/soap/http" style="document"/> </binding> <service name="StockQuoteService"> <port name="StockQuotePort" binding="tns2:StockQuoteBinding"> <tns3:address xsi:type="tAddress" location="http://localhost/StockQuote/StockQuote.php"/> </port> </service> </definitions> <!-- this line identifies this file as WSDL generated by SCA for PHP. Do not remove -->
Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-sca.examples.exposing-webservice.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.