Les logiciels sont aujourd'hui plus puissants que jamais. Ils peuvent fournir autant d'informations et de fonctionnalités aux utilisateurs. Avec les capacités de plus en plus puissantes des applications, vous êtes-vous demandé comment tout cela est réalisable ?
Un type de fichier qui apparaît souvent dans la perspective du développement d'applications est un fichier WSDL, mais qu'est-ce que c'est ?
Qu'est-ce qu'un fichier WSDL ?
WSDL (Web Services Description Language) permet aux différentes applications de communiquer entre elles sur un réseau de manière standardisée. Il connecte les fournisseurs et les consommateurs de services Web, permettant les échanges de données entre, mais sans s'y limiter, les deux parties.
Les fichiers WSDL sont également connus pour fournir une ample description concernant les capacités d'un service Web, en particulier pour les services Web basés sur SOAP. Les fichiers WSDL sont écrits en langage XML (eXtensible Markup Language) et sont essentiels pour les tests des API SOAP.
Plus important encore, les fichiers WSDL sont importants en raison de la définition d'un accord formel entre le fournisseur de services Web et le consommateur de services. Les fichiers WSDL montrent quelles opérations sont disponibles, le format et la structure des messages, et d'autres détails importants requis lors de l'utilisation du service Web.
Structure des fichiers WSDL avec exemples
Les fichiers WSDL ont des composants clés qui fournissent des informations pour son utilisation. Cet article démontrera des parties d'un fichier WSDL en langage XML, en utilisant un service Web de météo comme exemple.
Types type
La section type des fichiers WSDL est utilisée pour définir les types de données qui seront utilisés dans les opérations du service Web.
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.com/weather">
<element name="City" type="string"/>
<element name="Weather" type="string"/>
</schema>
</types>Cet exemple spécifie la structure des éléments, y compris leurs noms City et Weather étant de type string.
Message message
La section message définit les éléments de données qui sont échangés entre le fournisseur de services Web et l'utilisateur du service. Dans les exemples ci-dessus, vous pouvez voir les noms de messages GetWeatherRequest et GetWeatherResponse.
<message name="GetWeatherRequest">
<part name="City" element="tns:City"/>
</message>
<message name="GetWeatherResponse">
<part name="Weather" element="tns:Weather"/>
</message>Ici, les messages GetWeatherRequest et GetWeatherResponse sont définis avec une partie spécifiant les éléments de données envoyés ou reçus.
Type de port portType
La section portType décrit un ensemble d'opérations qui peuvent être effectuées par le service Web, telles que le nom de l'opération GetWeather. Il définit l'interface abstraite du service, en listant les opérations ainsi que leurs messages d'entrée tns:GetWeatherRequest et de sortie tns:GetWeatherResponse.
<portType name="WeatherServicePortType">
<operation name="GetWeather">
<input message="tns:GetWeatherRequest"/>
<output message="tns:GetWeatherResponse"/>
</operation>
</portType>L'exemple ci-dessus montre WeatherServicePortType une opération définie GetWeather avec des messages d'entrée et de sortie spécifiés.
Liaison binding
La section binding spécifie comment les opérations abstraites définies dans portType sont mappées à un protocole concret pour la communication. Il définit des détails tels que le format des messages et le protocole (par exemple, SOAP).
<binding name="WeatherServiceSoapBinding" type="tns:WeatherServicePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetWeather">
<soap:operation soapAction="http://example.com/weather/GetWeather"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>Dans cet exemple, WeatherServiceSoapBinding est défini avec SOAP comme protocole de liaison, spécifiant les détails concernant le format et le transport des messages.
Port port
La section port spécifie l'adresse réseau où le service Web est accessible.
<service name="WeatherService">
<port name="WeatherServicePort" binding="tns:WeatherServiceSoapBinding">
<soap:address location="http://example.com/weather/service"/>
</port>
</service>Ici, WeatherService est défini avec WeatherServicePort qui utilise la liaison SOAP, et son adresse est spécifiée comme http://example.com/weather/service.
Exemples de fichiers WSDL
Exemple de fichier WSDL de service Web de météo simple
En compilant les différents extraits de code de composants clés fournis dans la section précédente, nous pouvons les combiner et créer un fichier WSDL de service Web de météo simple.
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://example.com/weather"
targetNamespace="http://example.com/weather">
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.com/weather">
<element name="City" type="string"/>
<element name="Weather" type="string"/>
</schema>
</types>
<message name="GetWeatherRequest">
<part name="City" element="tns:City"/>
</message>
<message name="GetWeatherResponse">
<part name="Weather" element="tns:Weather"/>
</message>
<portType name="WeatherServicePortType">
<operation name="GetWeather">
<input message="tns:GetWeatherRequest"/>
<output message="tns:GetWeatherResponse"/>
</operation>
</portType>
<binding name="WeatherServiceSoapBinding" type="tns:WeatherServicePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetWeather">
<soap:operation soapAction="http://example.com/weather/GetWeather"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="WeatherService">
<port name="WeatherServicePort" binding="tns:WeatherServiceSoapBinding">
<soap:address location="http://example.com/weather/service"/>
</port>
</service>
</definitions>Dans cet exemple de service Web de météo simple, on peut observer que :
- Le service Web fonctionne sous l'espace de noms
http://example.com/weather. - Il définit deux types de données simples :
CityetWeather. - Il existe deux messages,
GetWeatherRequestetGetWeatherResponse, spécifiant les données d'entrée et de sortie pour l'opérationGetWeather. - Le type de port
WeatherServicePortTypedéfinit l'opérationGetWeather. WeatherServiceSoapBindingspécifie que la communication utilisera SOAP avec un style et un transport spécifiques.- Le service
WeatherServicea un port nomméWeatherServicePortutilisant la liaison SOAP, et son adresse esthttp://example.com/weather/service.
Exemple de fichier WSDL de service Web de commerce électronique complexe
Voici un exemple de fichier WSDL de service Web de commerce électronique plus compliqué qui comprend plusieurs opérations, types de données et fonctionnalités.
?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://example.com/ecommerce"
targetNamespace="http://example.com/ecommerce">
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.com/ecommerce">
<element name="Product">
<complexType>
<sequence>
<element name="ProductId" type="string"/>
<element name="ProductName" type="string"/>
<element name="Price" type="decimal"/>
</sequence>
</complexType>
</element>
<element name="Order">
<complexType>
<sequence>
<element name="OrderId" type="string"/>
<element name="CustomerName" type="string"/>
<element name="Products" type="tns:Product" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
</schema>
</types>
<message name="GetProductRequest">
<part name="ProductId" element="tns:ProductId"/>
</message>
<message name="GetProductResponse">
<part name="Product" element="tns:Product"/>
</message>
<message name="PlaceOrderRequest">
<part name="Order" element="tns:Order"/>
</message>
<message name="PlaceOrderResponse">
<part name="Confirmation" type="string"/>
</message>
<portType name="ECommerceServicePortType">
<operation name="GetProduct">
<input message="tns:GetProductRequest"/>
<output message="tns:GetProductResponse"/>
</operation>
<operation name="PlaceOrder">
<input message="tns:PlaceOrderRequest"/>
<output message="tns:PlaceOrderResponse"/>
</operation>
</portType>
<binding name="ECommerceServiceSoapBinding" type="tns:ECommerceServicePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetProduct">
<soap:operation soapAction="http://example.com/ecommerce/GetProduct"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="PlaceOrder">
<soap:operation soapAction="http://example.com/ecommerce/PlaceOrder"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="ECommerceService">
<port name="ECommerceServicePort" binding="tns:ECommerceServiceSoapBinding">
<soap:address location="http://example.com/ecommerce/service"/>
</port>
</service>
</definitions>Dans cet exemple de service Web de commerce électronique complexe, on peut observer que :
- Des types de données complexes
ProductetOrdersont définis avec des éléments imbriqués (commeProductID,ProductNameetPrice) et des séquences. - Plusieurs opérations
GetProductetPlaceOrdersont définies dans leECommerceServicePortType. - Les messages
GetProductRequest,GetProductResponse,PlaceOrderRequest,PlaceOrderResponsesont définis pour chaque opération, en spécifiant les données d'entrée et de sortie. - La liaison SOAP
ECommerceServiceSoapBindingspécifie les détails de formatage pour la communication à l'aide de SOAP. - Le service
ECommerceServicea un port nomméECommerceServicePortutilisant la liaison SOAP, et son adresse est spécifiée commehttp://example.com/ecommerce/service.
Modification des fichiers WSDL à l'aide d'Apidog
Les fichiers WSDL étant relativement courants dans le domaine du développement logiciel, vous devrez peut-être en modifier ou en créer un vous-même. Avec des tonnes de plateformes API, Apidog est un excellent choix.
Apidog permet aux développeurs, aux fournisseurs de services Web et aux utilisateurs de services Web de tous horizons de passer en douceur d'autres plateformes API à Apidog.
Heureusement, Apidog couvre également les importations de fichiers WSDL ! Si vous souhaitez l'essayer, assurez-vous de télécharger Apidog à l'aide des boutons ci-dessous.
N'oubliez pas de vous connecter et de démarrer un nouveau projet une fois que vous êtes entré. Si vous avez besoin d'aide, consultez les documents d'aide d'Apidog.
Importation de votre API SOAP sur Apidog à partir d'un fichier WSDL

Une fois que vous avez ouvert un nouveau projet, cliquez sur le bouton « Paramètres » dans la barre d'outils verticale située sur le côté gauche de la fenêtre Apidog. Ensuite, cliquez sur la flèche 2 et la flèche 3 dans cet ordre.
Test facile de l'API SOAP sur Apidog

Si vous avez importé avec succès le fichier WSDL, vous devriez voir son nom sur le côté gauche de l'écran, comme indiqué autour de la flèche 1.
Pour commencer à modifier le fichier WSDL, cliquez sur les flèches 2 à 4 dans l'ordre croissant, et vous êtes prêt !
Conclusion
Avec les fichiers WSDL basés sur XML (eXtensible Markup Language), il est légèrement plus facile à comprendre. Les fichiers WSDL peuvent varier en complexité en fonction du degré de spécificité des descriptions et des fonctionnalités du service Web.



