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 :
City
etWeather
. - Il existe deux messages,
GetWeatherRequest
etGetWeatherResponse
, spécifiant les données d'entrée et de sortie pour l'opérationGetWeather
. - Le type de port
WeatherServicePortType
définit l'opérationGetWeather
. WeatherServiceSoapBinding
spécifie que la communication utilisera SOAP avec un style et un transport spécifiques.- Le service
WeatherService
a un port nomméWeatherServicePort
utilisant 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
Product
etOrder
sont définis avec des éléments imbriqués (commeProductID
,ProductName
etPrice
) et des séquences. - Plusieurs opérations
GetProduct
etPlaceOrder
sont définies dans leECommerceServicePortType
. - Les messages
GetProductRequest
,GetProductResponse
,PlaceOrderRequest
,PlaceOrderResponse
sont définis pour chaque opération, en spécifiant les données d'entrée et de sortie. - La liaison SOAP
ECommerceServiceSoapBinding
spécifie les détails de formatage pour la communication à l'aide de SOAP. - Le service
ECommerceService
a un port nomméECommerceServicePort
utilisant 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.