Meilleurs exemples de fichiers WSDL

Enrichissez vos connaissances avec des exemples WSDL simples et complexes.

Louis Dupont

Louis Dupont

5 June 2025

Meilleurs exemples de fichiers WSDL

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 :

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 :

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.

button

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

import wsdl file soap api apidog
Importation du fichier WSDL sur Apidog

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

Modification des fichiers WSDL à l'aide d'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.

Explore more

Comment utiliser Deepseek R1 en local avec Cursor

Comment utiliser Deepseek R1 en local avec Cursor

Apprenez à configurer DeepSeek R1 local avec Cursor IDE pour une aide au codage IA privée et économique.

4 June 2025

Comment exécuter Gemma 3n sur Android ?

Comment exécuter Gemma 3n sur Android ?

Apprenez à installer et exécuter Gemma 3n sur Android via Google AI Edge Gallery.

3 June 2025

Comment utiliser Claude Code avec GitHub Actions

Comment utiliser Claude Code avec GitHub Actions

Découvrez Claude Code avec GitHub Actions : revues de code, corrections de bugs, implémentation de fonctionnalités. Tutoriel pour développeurs.

29 May 2025

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API