MENU
    Trabalho com APIs SOAP e XML
    • 31 Oct 2023
    • 3 Minutos para Ler
    • Contribuintes

    Trabalho com APIs SOAP e XML


    Resumo do artigo

    Visão geral

    Um guia com dicas e truques para trabalhar com APIs baseadas em XML

    Os Tulip Connectors podem ser usados para interagir com muitos tipos de fontes de dados externas. Este artigo se concentra em APIs HTTP que trocam informações usando XML. Essa categoria inclui APIs SOAP.

    Envio de dados XML no Tulip

    Para enviar conteúdo XML no corpo de uma solicitação, use a notação $value$ para mostrar que um parâmetro deve ser inserido.

    Por exemplo, com o seguinte no campo Request Body:

    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    
     xmlns:mes="http://mes.myexample.com"
    
     xmlns:get="http://getInfo.mes.myexample.com"
    
    
    
    >
    >
    >
    >
    >
    >
    >
    >
    >
    > $input1$
    >
    > $input2$
    >
    >
    >
    >
    >
    >
    >
    >
    > ```
    >
    >
    >
    
    
    e os valores `input1` e `input2` como entradas para a Connector Function, uma solicitação é feita com os valores de `input1` e `input2` substituídos no Request Body.
    
    
    Isso é mostrado na interface da Tulip Connector Function abaixo:
    
    
    ![Working with SOAP and XML APIs_229803470.png](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Working%20with%20SOAP%20and%20XML%20APIs_229803470.png){height="" width=""}
    
    
    ## Analisando dados XML no Tulip
    
    
    ### Um exemplo simples de API
    
    
    Vamos começar com um exemplo simples de resposta de uma API XML.
    Plain text

    xml version="1.0" encoding="UTF-8"?

    Italiano do cotidiano

    Giada De Laurentiis

    2005

    30.00

    Harry Potter

    J. K. Rowling

    2005

    29.99

    Aprendendo XML

    Erik T. Ray

    2003

    39.95

    Os exemplos a seguir mostram como acessar as várias informações no Tulip.
    
    
    Um extrator de:
    
    
    `/bookstore/book[1]/title`
    
    
    retorna:
    
    
    `<title lang="en">Everyday Italian</title>`
    
    
    Observe que as matrizes em XML são "1-indexadas", o que significa que o primeiro elemento está na posição "1", ao contrário da {{glossary.JSON}}-query, que é "0-indexada".
    
    
    Um extrator de:
    
    
    `/bookstore/book[1]/title/text()`
    
    
    retorna:
    
    
    `Everyday Italian`
    
    
    Observe que a função `/text()` é usada para extrair o valor do texto contido no nó selecionado.
    
    
    Um extrator de:
    
    
    `/bookstore/book[@category="children"][1]/title/text()`
    
    
    retorna:
    
    
    `Harry Potter`
    
    
    Observe que o seletor nos permitiu pesquisar nas propriedades de um nó.
    
    
    Esses exemplos podem ser usados diretamente no Tulip, conforme mostrado abaixo:
    
    
    ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Working%20with%20SOAP%20and%20XML%20APIs_229776239.png)
    
    
    ### Um exemplo de API SOAP
    
    
    Agora vamos examinar um caso mais complexo com namespaces, um recurso típico das APIs SOAP.
    
    
    ``` <soap:Envelope
    
     xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
    
    
    >
    >
    >
    >
    >
    >
    >
    >
    >
    >  0
    >
    >
    >
    >
    >
    >  informações recuperadas com sucesso
    >
    >
    >
    >
    >
    >
    >
    > Minha operação
    >
    > Nenhuma
    >
    > 1234567-890
    >
    > B
    >
    >
    >
    >
    >
    >
    >
    > Número da peça
    >
    > 1234567-890
    >
    >
    >
    >
    >
    > Revisão da peça
    >
    > B
    >
    >
    >
    >
    >
    > Descrição da peça
    >
    > Minha peça de exemplo
    >
    >
    >
    >
    >
    >
    >
    > Normal
    >
    >
    >
    >
    >
    >
    >
    >
    >
    >
    >
    >
    > ```
    >
    >
    >
    
    
    Essa resposta usa Namespaces XML, o que aumenta a complexidade. Na maioria dos casos, uma pesquisa global usando os operadores `//*` e `.//*` torna a extração muito simples.
    
    
    Um extrator de:
    
    
    `//*[local-name()="propertyName"][1]/text()`
    
    
    retorna:
    
    
    `PartNumber`
    
    
    Observe que as matrizes em XML são "indexadas em 1", o que significa que o primeiro elemento está na posição "1", ao contrário da consulta json, que é "indexada em 0".
    
    
    Um extrator de:
    
    
    `//*[local-name()="Property"]`
    
    
    retorna:
    
    
    `<Property xmlns="http://getInfo.mes.myexample.com"> <propertyName>PartNumber</propertyName> <propertyValue>1234567-890</propertyValue> </Property> <Property xmlns="http://getInfo.mes.myexample.com"> <propertyName>PartRevision</propertyName> <propertyValue>B</propertyValue> </Property> <Property xmlns="http://getInfo.mes.myexample.com"> <propertyName>PartDescription</propertyName> <propertyValue>Minha parte de exemplo</propertyValue> </Property>`
    
    
    Observe aqui que os namespaces são "trazidos" para esse resultado. Portanto, uma subconsulta ainda pesquisaria o namespace global.
    
    
    Para extrair uma matriz de objetos, use a pesquisa global mostrada no exemplo anterior para extrair a matriz e, em seguida, um extrator de pesquisa local de:
    
    
    `.//*[local-name()="propertyName"]/text()`
    
    
    para recuperar uma matriz de objetos do tipo:
    
    
    `[ { "Name": "PartNumber"
     "Value": "1234567-890" }, { "Name": "PartRevision"
     "Value" (Valor): "B"
     }, { "Name": "PartDescription"
     "Value" (Valor): "My example part"
     }
    ]`
    
    
    Esses exemplos são mostrados na interface de conectores da Tulip abaixo:
    
    
    ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Working%20with%20SOAP%20and%20XML%20APIs_229781522.png)
    
    
    
    
    ---
    
    
    Encontrou o que estava procurando?
    
    
    Você também pode acessar [community.tulip.co](https://community.tulip.co/?utm_source=intercom&utm_medium=article-link&utm_campaign=all) para postar sua pergunta ou ver se outras pessoas tiveram uma pergunta semelhante!
    Plain text

    Este artigo foi útil?