Что такое WSDL в контексте веб-сервисов?

«Что такое WSDL в контексте веб-сервисов?» — вопрос из категории API тестирование, который задают на 22% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

WSDL (Web Services Description Language) — это XML-документ, который формально описывает интерфейс веб-сервиса на основе SOAP (Simple Object Access Protocol). Он действует как контракт между сервером и клиентом.

Что определяет WSDL-файл:

  • Типы данных (<types>): Использует XML Schema (XSD) для определения сложных структур данных.
  • Сообщения (<message>): Описывает формат входящих и исходящих сообщений.
  • Операции (<portType>): Перечисляет доступные методы (например, getUser, createOrder).
  • Привязка (<binding>): Указывает протокол (SOAP) и стиль обмена (RPC или document).
  • Сервис (<service>): Содержит URL-адреса конечных точек (endpoints) для доступа к сервису.

Пример фрагмента WSDL:

<definitions>
  <message name="getUserRequest">
    <part name="userId" type="xsd:int"/>
  </message>
  <portType name="UserServicePortType">
    <operation name="getUser">
      <input message="tns:getUserRequest"/>
      <output message="tns:getUserResponse"/>
    </operation>
  </portType>
  <binding name="UserServiceBinding" type="tns:UserServicePortType">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  </binding>
  <service name="UserService">
    <port name="UserServicePort" binding="tns:UserServiceBinding">
      <soap:address location="http://api.example.com/UserService"/>
    </port>
  </service>
</definitions>

Основное применение:

  1. Генерация клиентского кода: Инструменты вроде wsimport (Java) или wsdl.exe (.NET) читают WSDL и автоматически создают классы-заглушки для вызова сервиса.
  2. Документирование: Служит машинно-читаемой документацией API.
  3. Валидация: Позволяет проверять соответствие SOAP-сообщений контракту.

Важно: WSDL специфичен для SOAP-сервисов. Современные RESTful API обычно описываются с помощью OpenAPI (Swagger).