Apidog

Plataforma Colaborativa All-in-one para Desenvolvimento de API

Design de API

Documentação de API

Depuração de API

Mock de API

Testes Automatizados de API

Melhores Exemplos de Arquivos WSDL (Atualizado 2024)

Enriqueça seu conhecimento conhecendo exemplos simples e complexos de arquivos WSDL.

Miguel Oliveira

Miguel Oliveira

Updated on novembro 29, 2024

O software hoje em dia é mais poderoso do que nunca. Ele pode fornecer tanta informação e funcionalidades para os usuários. Com as capacidades cada vez mais poderosas das aplicações, você já se perguntou como é tudo isso possível?

Um tipo de arquivo que aparece frequentemente na retrospectiva do desenvolvimento de aplicações é um arquivo WSDL, mas o que é isso?

O que é um Arquivo WSDL?

WSDL (Web Services Description Language) permite que diferentes aplicações se comuniquem entre si através de uma rede de maneira padronizada. Ele conecta provedores e consumidores de serviços web, permitindo trocas de dados entre, mas não se limitando, às duas partes.

Os arquivos WSDL também são conhecidos por fornecer uma ampla descrição sobre as capacidades de um serviço web, especificamente para serviços web baseados em SOAP. Os arquivos WSDL são escritos na linguagem XML (eXtensible Markup Language) e são vitais para o teste de APIs SOAP.

Mais importante, os arquivos WSDL são significativos devido à definição de um acordo formal entre o provedor de serviços web e o consumidor do serviço. Os arquivos WSDL mostram quais operações estão disponíveis, o formato e a estrutura das mensagens e outros detalhes importantes necessários ao usar o serviço web.

Estrutura dos Arquivos WSDL com Exemplos

Os arquivos WSDL têm componentes-chave que fornecem informações sobre seu uso. Este artigo irá demonstrar partes de um arquivo WSDL na linguagem XML, usando um serviço web de clima como exemplo.

Tipos type

A seção type dos arquivos WSDL é usada para definir os tipos de dados que serão usados nas operações do serviço 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 exemplo especifica a estrutura dos elementos, incluindo seus nomes City e Weather que são do tipo string.

Mensagem message

A seção message define os elementos de dados que estão sendo trocados entre o provedor de serviços web e o usuário do serviço. Nos exemplos acima, você pode ver os nomes das mensagens GetWeatherRequest e GetWeatherResponse.

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

Aqui, as mensagens GetWeatherRequest e GetWeatherResponse são definidas com uma parte especificando os elementos de dados que estão sendo enviados ou recebidos.

Tipo de Porta portType

A seção portType descreve um conjunto de operações que podem ser realizadas pelo serviço web, como o nome da operação GetWeather. Ela define a interface abstrata para o serviço, listando as operações junto com suas mensagens de entrada tns:GetWeatherRequest e saída tns:GetWeatherResponse.

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

O exemplo acima mostra WeatherServicePortType uma operação definida GetWeather com mensagens de entrada e saída especificadas.

Ligação binding

A seção binding especifica como as operações abstratas definidas em portType estão mapeadas para um protocolo concreto de comunicação. Ela define detalhes, como o formato da mensagem e o protocolo (por exemplo, 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>

Neste exemplo, WeatherServiceSoapBinding é definido com SOAP como o protocolo de ligação, especificando detalhes sobre o formato da mensagem e transporte.

Porta port

A seção port especifica o endereço de rede onde o serviço web pode ser acessado.

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

Aqui, WeatherService é definido com WeatherServicePort que usa o binding SOAP, e seu endereço é especificado como http://example.com/weather/service.

Exemplos de Arquivos WSDL

Exemplo Simples de Arquivo WSDL de Serviço Web de Clima

Compilando os diferentes códigos dos componentes-chave fornecidos na seção anterior, podemos combiná-los e criar um arquivo WSDL simples para um serviço web de clima.

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

Neste exemplo simples de serviço web de clima, pode-se observar que:

  • O serviço web opera sob o namespace http://example.com/weather.
  • Define dois tipos de dados simples: City e Weather.
  • Existem duas mensagens, GetWeatherRequest e GetWeatherResponse, especificando os dados de entrada e saída para a operação GetWeather.
  • O tipo de porta WeatherServicePortType define a operação GetWeather.
  • WeatherServiceSoapBinding especifica que a comunicação usará SOAP com um estilo e transporte específicos.
  • O serviço WeatherService tem uma porta chamada WeatherServicePort usando o binding SOAP, e seu endereço é especificado como http://example.com/weather/service.

Exemplo Complexo de Arquivo WSDL de Serviço Web de Comércio Eletrônico

Aqui está um exemplo mais complicado de arquivo WSDL para serviço web de comércio eletrônico que inclui múltiplas operações, tipos de dados e funcionalidades.

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

Neste exemplo complexo de serviço web de comércio eletrônico, pode-se observar que:

  • Tipos de dados complexos Product e Order são definidos com elementos aninhados (como ProductID, ProductName e Price) e sequências.
  • Múltiplas operações GetProduct e PlaceOrder estão definidas dentro do ECommerceServicePortType.
  • Mensagens GetProductRequest, GetProductResponse, PlaceOrderRequest, PlaceOrderResponse são definidas para cada operação, especificando os dados de entrada e saída.
  • A ligação SOAP ECommerceServiceSoapBinding especifica os detalhes de formatação para comunicação usando SOAP.
  • O serviço ECommerceService tem uma porta chamada ECommerceServicePort usando o binding SOAP, e seu endereço é especificado como http://example.com/ecommerce/service.

Editando Arquivos WSDL Usando Apidog

Como os arquivos WSDL são relativamente comuns na cena de desenvolvimento de software, você pode ter que editar ou criar um você mesmo. Com muitas plataformas de API disponíveis, o Apidog é uma excelente escolha.

O Apidog permite que desenvolvedores, provedores de serviços web e usuários de serviços web de qualquer formação façam uma transição suave de outras plataformas de API para o Apidog.

Felizmente, o Apidog também cobre importação de arquivos WSDL! Se você estiver interessado em experimentá-lo, certifique-se de baixar o Apidog usando os botões abaixo.

botão

Não se esqueça de fazer login e iniciar um novo projeto assim que entrar. Se você precisar de ajuda, dê uma olhada na Documentação de Ajuda do Apidog.

Importando Sua API SOAP para o Apidog a Partir de um Arquivo WSDL

importar arquivo wsdl api soap apidog
Importando arquivo WSDL para Apidog

Uma vez que você tenha aberto um novo projeto, clique no botão "Configurações" na barra de ferramentas vertical encontrada no lado esquerdo da janela do Apidog. Em seguida, clique nas Setas 2 e 3 nessa ordem.

Testando API SOAP Facilmente no Apidog

Editando arquivos WSDL usando Apidog

Se você importou o arquivo WSDL com sucesso, deverá ver seu nome no lado esquerdo da tela, como mostrado ao redor da Setas 1.

Para começar a editar o arquivo WSDL, clique nas Setas 2 a 4 em ordem crescente, e você estará pronto para começar!

Conclusão

Com arquivos WSDL baseados em XML (eXtensible Markup Language), é um pouco mais fácil de entender. Os arquivos WSDL podem variar em complexidade dependendo de quão específicas são as descrições e funcionalidades do serviço web.

Como acessar a API do Claude 3.7 Sonnet e testar usando ApidogTutoriais

Como acessar a API do Claude 3.7 Sonnet e testar usando Apidog

Se você está empolgado com o último lançamento da Anthropic, Claude 3.7 Sonnet, e quer explorar suas capacidades através da API enquanto o testa com o Apidog, você está no lugar certo. 💡Antes de começarmos, deixe-me fazer uma rápida observação: baixe o Apidog gratuitamente hoje e otimize seu processo de teste de API, especialmente para explorar os poderosos recursos do Claude 3.7 Sonnet—perfeito para desenvolvedores que desejam testar modelos de IA de ponta como este!botão Vamos começar com a

@apidog

fevereiro 25, 2025

Como passar o x-API-key no cabeçalho?Tutoriais

Como passar o x-API-key no cabeçalho?

Desvende os segredos da segurança eficaz de APIs, dominando como passar x-API-key nos cabeçalhos. Este guia abrangente revelará a importância desse processo e como ferramentas como o Apidog podem facilitar seus esforços. Continue lendo para garantir que suas interações com a API permaneçam seguras!

Miguel Oliveira

agosto 12, 2024

Como corrigir o erro HTTP 405 Método Não Permitido no PostmanTutoriais

Como corrigir o erro HTTP 405 Método Não Permitido no Postman

O código de erro HTTP 405 ocorre quando você tenta acessar um servidor usando uma chave de API ou token de acesso inválido ou ausente. Neste artigo, veremos mais sobre o erro 405 e como corrigi-lo.

Miguel Oliveira

agosto 11, 2024