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
yWeather
. - Hay dos mensajes,
GetWeatherRequest
yGetWeatherResponse
, que especifican los datos de entrada y salida para la operaciónGetWeather
. - El tipo de puerto
WeatherServicePortType
define la operaciónGetWeather
. WeatherServiceSoapBinding
especifica que la comunicación utilizará SOAP con un estilo y transporte específicos.- El servicio
WeatherService
tiene un puerto llamadoWeatherServicePort
que utiliza el enlace SOAP, y su dirección eshttp://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
yOrder
se definen con elementos anidados (comoProductID
,ProductName
yPrice
) y secuencias. - Se definen múltiples operaciones
GetProduct
yPlaceOrder
dentro deECommerceServicePortType
. - 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 llamadoECommerceServicePort
que utiliza el enlace SOAP, y su dirección se especifica comohttp://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.
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

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

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.