Apidog

Plataforma de desarrollo de API colaborativa todo en uno

Diseño de API

Documentación de API

Depuración de API

Simulación de API

Prueba automatizada de API

Mejores ejemplos de archivos WSDL

Amplía tu conocimiento con ejemplos WSDL, simples y complejos.

Daniel Costa

Daniel Costa

Updated on April 15, 2025

El software hoy en día es más potente que nunca. Pueden proporcionar mucha información y funcionalidades para los usuarios. Con las habilidades cada vez más poderosas de las aplicaciones, ¿te has preguntado cómo se logra todo?

Un tipo de archivo que aparece a menudo en la retrospectiva del desarrollo de aplicaciones es un archivo WSDL, pero ¿qué es?

¿Qué es un archivo WSDL?

WSDL (Web Services Description Language) permite que diferentes aplicaciones se comuniquen entre sí a través de una red de forma estandarizada. Conecta a los proveedores y consumidores de servicios web, permitiendo el intercambio de datos entre las dos partes, pero no limitado a ellas.

Los archivos WSDL también son conocidos por proporcionar una amplia descripción de las capacidades de un servicio web, específicamente para los servicios web basados en SOAP. Los archivos WSDL están escritos en lenguaje XML (eXtensible Markup Language) y son vitales para las pruebas de las API de SOAP.

Más importante aún, los archivos WSDL son importantes debido a la definición de un acuerdo formal entre el proveedor del servicio web y el consumidor del servicio. Los archivos WSDL muestran qué operaciones están disponibles, el formato y la estructura de los mensajes y otros detalles importantes necesarios al usar el servicio web.

Estructura de los archivos WSDL con ejemplos

Los archivos WSDL tienen componentes clave que proporcionan información para su uso. Este artículo demostrará partes de un archivo WSDL en lenguaje XML, utilizando un servicio web meteorológico como ejemplo.

Tipos type

La sección type de los archivos WSDL se utiliza para definir los tipos de datos que se utilizarán en las operaciones del servicio 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>

Este ejemplo especifica la estructura de los elementos, incluidos sus nombres City y Weather, que son del tipo string.

Mensaje message

La sección message define los elementos de datos que se intercambian entre el proveedor del servicio web y el usuario del servicio. En los ejemplos anteriores, puede ver los nombres de los mensajes GetWeatherRequest y GetWeatherResponse.

<message name="GetWeatherRequest">
    <part name="City" element="tns:City"/>
</message>
<message name="GetWeatherResponse">
    <part name="Weather" element="tns:Weather"/>
</message>

Aquí, los mensajes GetWeatherRequest y GetWeatherResponse se definen con una parte que especifica los elementos de datos que se envían o reciben.

Tipo de puerto portType

La sección portType describe un conjunto de operaciones que puede realizar el servicio web, como el nombre de la operación GetWeather. Define la interfaz abstracta para el servicio, enumerando las operaciones junto con sus mensajes de entrada tns:GetWeatherRequest y salida tns:GetWeatherResponse.

<portType name="WeatherServicePortType">
    <operation name="GetWeather">
        <input message="tns:GetWeatherRequest"/>
        <output message="tns:GetWeatherResponse"/>
    </operation>
</portType>

El ejemplo anterior muestra WeatherServicePortType una operación definida GetWeather con mensajes de entrada y salida especificados.

Enlace binding

La sección binding especifica cómo las operaciones abstractas definidas en portType se asignan a un protocolo concreto para la comunicación. Define detalles como el formato del mensaje y el protocolo (por ejemplo, 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>

En este ejemplo, WeatherServiceSoapBinding se define con SOAP como protocolo de enlace, especificando detalles sobre el formato del mensaje y el transporte.

Puerto port

La sección port especifica la dirección de red donde se puede acceder al servicio web.

<service name="WeatherService">
    <port name="WeatherServicePort" binding="tns:WeatherServiceSoapBinding">
        <soap:address location="http://example.com/weather/service"/>
    </port>
</service>

Aquí, WeatherService se define con WeatherServicePort que utiliza el enlace SOAP, y su dirección se especifica como http://example.com/weather/service.

Ejemplos de archivos WSDL

Ejemplo de archivo WSDL de servicio web meteorológico simple

Compilando los diferentes fragmentos de código de componentes clave proporcionados en la sección anterior, podemos combinarlos y crear un archivo WSDL de servicio web meteorológico 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>

En este sencillo ejemplo de servicio web meteorológico, se puede observar que:

  • El servicio web opera bajo el espacio de nombres http://example.com/weather.
  • Define dos tipos de datos simples: City y Weather.
  • Hay dos mensajes, GetWeatherRequest y GetWeatherResponse, que especifican los datos de entrada y salida para la operación GetWeather.
  • El tipo de puerto WeatherServicePortType define la operación GetWeather.
  • WeatherServiceSoapBinding especifica que la comunicación utilizará SOAP con un estilo y transporte específicos.
  • El servicio WeatherService tiene un puerto llamado WeatherServicePort que utiliza el enlace SOAP, y su dirección es http://example.com/weather/service.

Ejemplo de archivo WSDL de servicio web de comercio electrónico complejo

Aquí hay un ejemplo de archivo WSDL de servicio web de comercio electrónico más complicado que incluye múltiples operaciones, tipos de datos y características.

?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>

En este complejo ejemplo de servicio web de comercio electrónico, se puede observar que:

  • Los tipos de datos complejos Product y Order se definen con elementos anidados (como ProductID, ProductName y Price) y secuencias.
  • Se definen múltiples operaciones GetProduct y PlaceOrder dentro de ECommerceServicePortType.
  • Los mensajes GetProductRequest, GetProductResponse, PlaceOrderRequest, PlaceOrderResponse se definen para cada operación, especificando los datos de entrada y salida.
  • El enlace SOAP ECommerceServiceSoapBinding especifica los detalles de formato para la comunicación mediante SOAP.
  • El servicio ECommerceService tiene un puerto llamado ECommerceServicePort que utiliza el enlace SOAP, y su dirección se especifica como http://example.com/ecommerce/service.

Edición de archivos WSDL con Apidog

Como los archivos WSDL son relativamente comunes en el panorama del desarrollo de software, es posible que tengas que editar o crear uno tú mismo. Con toneladas de plataformas API disponibles, Apidog es una excelente opción.

Apidog permite a los desarrolladores, proveedores de servicios web y usuarios de servicios web de cualquier origen realizar una transición perfecta desde otras plataformas API a Apidog.

Afortunadamente, ¡Apidog también cubre las importaciones de archivos WSDL! Si estás interesado en probarlo, asegúrate de descargar Apidog usando los botones a continuación.

button

No olvides iniciar sesión y comenzar un nuevo proyecto una vez que entres. Si necesitas ayuda, echa un vistazo a la Documentación de ayuda de Apidog.

Importación de tu API de SOAP a Apidog desde un archivo WSDL

import wsdl file soap api apidog
Importación de archivo WSDL a Apidog

Una vez que hayas abierto un nuevo proyecto, haz clic en el botón "Settings" en la barra de herramientas vertical que se encuentra en el lado izquierdo de la ventana de Apidog. Luego, haz clic en la Flecha 2 y la Flecha 3 en ese orden.

Prueba de la API de SOAP fácilmente en Apidog

Edición de archivos WSDL con Apidog

Si has importado correctamente el archivo WSDL, deberías ver su nombre en el lado izquierdo de la pantalla, como se muestra alrededor de la Flecha 1.

Para comenzar a editar el archivo WSDL, haz clic en las Flechas 2 a 4 en orden ascendente, ¡y listo!

Conclusión

Con los archivos WSDL basados en XML (eXtensible Markup Language), es un poco más fácil de entender. Los archivos WSDL pueden variar en complejidad dependiendo de cuán específicas sean las descripciones y funcionalidades del servicio web.

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)Tutoriales

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)

Aprende a crear cualquier web con Lovable en esta guía completa. Descubre procesos paso a paso, funciones innovadoras e integra herramientas gratuitas como Apidog para gestión API.

Daniel Costa

April 15, 2025

Cómo usar n8n con servidores MCPTutoriales

Cómo usar n8n con servidores MCP

Automatiza flujos con n8n y servidores MCP para IA. Guía técnica: configuración, APIs, nodo "MCP Server Trigger" y Apidog para pruebas.

Daniel Costa

April 14, 2025

Cómo añadir claves API personalizadas a Cursor: Una guía completaTutoriales

Cómo añadir claves API personalizadas a Cursor: Una guía completa

Este tutorial te guiará para configurar y gestionar claves API personalizadas en Cursor (OpenAI, Anthropic, Google y Azure).

Daniel Costa

April 11, 2025