---
title: "Processamento da API da Groupon com o Altova MapForce"
date: "2011-08-02"
categories: 
  - "data-integration"
  - "json"
tags: 
  - "altova-xmlspy"
  - "data-integration"
  - "data-mapping"
  - "mapforce"
  - "missionkit"
  - "web-services"
  - "xml-schema"
description: Explore como utilizar o Altova MapForce para a integração de dados com a API da Groupon, incluindo a geração de esquemas, a agregação de dados e os métodos de filtragem de saída.
---
Status: #blog

Tags:  #altova-xmlspy #data-integration #data-mapping #mapforce #missionkit #web-services #xml-schema

Categories: [data-integration](/blog/pt/category/data-integration.md) | [json](/blog/pt/category/json.md)
# Processamento da API da Groupon com o Altova MapForce

Frequentemente, pensamos em.. [projeto de integração de dados](https://www.altova.com/pt/mapforce/data-integration.html) como uma tradução de um único ficheiro de dados para um conjunto de dados diferente, mas.. [Altova MapForce](https://www.altova.com/pt/mapforce.html) permite expandir significativamente o conceito de um ficheiro de entrada. Por exemplo, o ficheiro de exemplo "MergeMultipleFiles.mfd" que é instalado com o MapForce ilustra como pode utilizar um nome de ficheiro com caracteres de coringa para combinar vários ficheiros de entrada num único ficheiro de saída. 

[![Exemplo do ficheiro MapForce "MergeMultipleFiles.mfd"](https://lh5.ggpht.com/-RBpPd9xjMSc/TjF168Ec0gI/AAAAAAAAAcE/bV5CyMKsPD4/Capture1a_thumb%25255B2%25255D.png?imgmax=800 "MapForce MergeMultipleFiles.mfd example")](http://lh4.ggpht.com/-R8gdQ1Q38u8/TjF16hMIxzI/AAAAAAAAAcA/GsqlZnUf5EM/s1600-h/Capture1a%25255B4%25255D.png) 

A entrada de mapeamento do MapForce não precisa sequer ser um ficheiro físico; pode ser uma URL que retorne dados estruturados de forma previsível, como as APIs de sites populares como o Groupon e muitos outros. Neste artigo, descreveremos como utilizar as ferramentas da Altova para obter, filtrar, analisar e apresentar dados disponíveis através de uma API web, utilizando o Groupon como exemplo. Se quiser experimentar por si, terá primeiro de visitar [http://www.groupon.com/pages/api](http://www.groupon.com/pages/api) para solicitar a sua chave de cliente da API do Groupon. 

**O problema: Todas as ofertas são locais** 

O site da Groupon e as subscrições por e-mail são excelentes para encontrar ofertas na sua área, mas e se estiver à procura de uma oferta para usar nas suas próximas férias, ou para oferecer como presente a amigos ou familiares em todo o país? Poderia, claro, introduzir manualmente cada localização na página da Groupon, mas isso já é coisa do passado. Vamos usar o [Altova MissionKit](https://www.altova.com/pt/missionkit/software-development-tools.html) para automatizar o processo. A API da Groupon oferece duas consultas de URL que retornam dados em formatos .json ou .xml: a primeira retorna uma lista de todas as localizações da Groupon (chamadas "divisões"), e a segunda retorna informações sobre as ofertas atuais para uma divisão específica. Se quisermos ver todas as ofertas para mais de uma divisão, precisamos processar várias URLs e agregar os dados num único resultado. Sim, o MapForce consegue fazer isso! 

**Primeiro, precisamos de um esquema** 

A documentação da API da Groupon descreve os elementos que serão devolvidos pelas nossas solicitações, mas não fornece um esquema XML. Isso não é um problema, podemos usar o MapForce para gerar um. Basta abrir um novo projeto de mapeamento e escolher "Inserir esquema XML/ficheiro", depois clicar no botão "Mudar para URL". Agora podemos inserir a URL para obter a lista de divisões da Groupon:

[![Inserir um novo componente numa transformação MapForce através de uma URL](https://lh3.ggpht.com/-qM2IPop_c30/TjF17brkVWI/AAAAAAAAAcM/jUa4qGeshyg/Capture5a_thumb%25255B3%25255D.png?imgmax=800 "Inserting a new component into a MapForce mapping by URL")](http://lh3.ggpht.com/-0BjDz4wIZH4/TjF17MmRwSI/AAAAAAAAAcI/LlPHWGndfxA/s1600-h/Capture5a%25255B7%25255D.png) 

Quando clicamos no botão "Abrir", o MapForce oferece a opção de gerar o esquema 

[![O MapForce oferece a funcionalidade de gerar um esquema XML](https://lh3.ggpht.com/-PiqLocWZDDA/TjF18LUtzxI/AAAAAAAAAcU/QIKrx4ewM70/Capture6a_thumb%25255B2%25255D.png?imgmax=800 "MapForce offers to generate an XML Schema")](http://lh5.ggpht.com/-vCth55bCKOo/TjF172VAMUI/AAAAAAAAAcQ/dncdbJ3mvtA/s1600-h/Capture6a%25255B4%25255D.png) 

Quando clicamos em "Sim", abre-se a caixa de diálogo "Ficheiro / Guardar". Guardei o esquema como "divisions.xsd", e o mapeamento com o novo esquema XML inserido fica assim: 

[![Gerou um ficheiro .xsd como um novo componente num projeto do MapForce](https://lh4.ggpht.com/-7puBZWoRdJc/TjF18jRYtJI/AAAAAAAAAcc/9iP01YJ3S5o/Capture7a_thumb%25255B2%25255D.png?imgmax=800 "Generated .xsd as a new component in a MapForce design")](http://lh3.ggpht.com/-0OJFlVtA3TY/TjF18dEUNzI/AAAAAAAAAcY/QbYs66oS4ao/s1600-h/Capture7a%25255B4%25255D.png) 

E o diálogo de Propriedades do componente de Esquema XML contém automaticamente a URL da API/divisões como o ficheiro XML de entrada

[![Propriedades dos componentes para o ficheiro .xsd gerado](https://lh4.ggpht.com/-DxR6I7S_M0Y/TjF19AYCulI/AAAAAAAAAck/oEyriBBPFLw/Capture8a_thumb%25255B2%25255D.png?imgmax=800 "Component properties for the generated .xsd")](http://lh3.ggpht.com/-j78a9iqLhNA/TjF185FWCYI/AAAAAAAAAcg/kpQVQRFdQnQ/s1600-h/Capture8a%25255B4%25255D.png) 

**Verifique o trabalho** 

Queremos filtrar os dados das divisões da Groupon para criar uma lista de nomes de identificadores (IDs) a serem utilizados nas pesquisas de ofertas para cada localidade. Mas, antes de avançarmos, talvez seja um bom momento para aplicar a técnica do ficheiro de texto, mencionada no artigo do blogue "[Solução rápida para funções complexas](https://www.altova.com/blog/2011/06/quick-solution-for-complicated.html)", para analisar os valores dos IDs. Quando inserimos o ficheiro de texto e conectamos os elementos de esquema das divisões e dos IDs, o mapeamento fica assim: 

[![Design do MapForce com um ficheiro de texto para visualizar o resultado](https://lh3.ggpht.com/-Mp6B8HzA76s/TjF19vA3IYI/AAAAAAAAAcs/tZ3QnQUmKHM/Capture9a_thumb.png?imgmax=800 "MapForce design with text file to preview output")](http://lh4.ggpht.com/-yq4FRkmg2pc/TjF19YEVF4I/AAAAAAAAAco/klUCUiUmSZA/s1600-h/Capture9a%25255B2%25255D.png) 

Conectámos o elemento de divisão às linhas do ficheiro de texto para gerar uma nova linha no ficheiro de texto para cada divisão única, de forma que o campo "Field1" em cada linha contenha o identificador. Ao clicar no botão "Output", obtém-se agora o seguinte resultado:

[![Janela de saída do MapForce](https://lh4.ggpht.com/-7FD3rcouxog/TjF1-O22nvI/AAAAAAAAAc0/s6XfT-yf6mM/Capture10a_thumb.png?imgmax=800 "MapForce Output window")](http://lh5.ggpht.com/-isYCN1hj10Q/TjF198GgHgI/AAAAAAAAAcw/AyfvxcATibY/s1600-h/Capture10a%25255B2%25255D.png) 

Tudo o que precisamos fazer é aplicar a função de concatenação [função de cadeia de caracteres](https://www.altova.com/pt/mapforce/data-processing-functions.html) para criar a lista de URLs de "deals" para todos os IDs de divisão. O próximo passo no mapeamento é o seguinte: 

[![Utilizar a função "concat" do MapForce para construir uma cadeia de caracteres](https://lh4.ggpht.com/-SBE9mgc9AfI/TjF1-rNY8WI/AAAAAAAAAc8/EEpWrWfj0gk/Capture11a_thumb.png?imgmax=800 "Using the MapForce concat function to build a string")](http://lh3.ggpht.com/-qClnz7ZHjw4/TjF1-XbA3MI/AAAAAAAAAc4/AJ-gV2dnmbY/s1600-h/Capture11a%25255B2%25255D.png) 

Ao passar o cursor sobre a constante associada ao valor1 da função "concat", é exibida a sua definição completa: 

[![Definição de uma constante de string no MapForce](https://lh3.ggpht.com/-t1SNI0Ds6ns/TjF1_fP4ABI/AAAAAAAAAdE/P9JmMG1qND4/clip_image010_thumb%25255B2%25255D.png?imgmax=800 "Definition of a MapForce string constant")](http://lh3.ggpht.com/-n6kAy7GZ470/TjF1-0j-6bI/AAAAAAAAAdA/RPmD7EcKCH0/s1600-h/clip_image010%25255B5%25255D.png) 

Quando clicamos no botão "Saída" para executar a transformação, o ficheiro de saída apresenta agora o seguinte aspeto: 

[![Janela de saída do MapForce](https://lh4.ggpht.com/-30F5fcIIBos/TjF2AKMGFmI/AAAAAAAAAdM/nR4W4krpL0g/Capture13a_thumb_thumb.png?imgmax=800 "MapForce Ouput window")](http://lh4.ggpht.com/-WMDb-lUe9C4/TjF1_mnQbEI/AAAAAAAAAdI/8uCForSSDxo/s1600-h/Capture13a_thumb%25255B2%25255D.png) 

Para uma análise mais detalhada, podemos abrir o esquema XML gerado no programa XMLSpy e visualizá-lo numa representação gráfica 

[![Visualização gráfica do esquema .xsd gerado, utilizando o Altova XMLSpy](https://lh5.ggpht.com/-Q2yiYR8WFic/TjF2A8H0sKI/AAAAAAAAAdU/PhSlddLXLrk/Capture4a_thumb_thumb.png?imgmax=800 "Altova XMLSpy graphical schema view of the generated .xsd")](http://lh4.ggpht.com/-En89-pLUYN0/TjF2AYoZNhI/AAAAAAAAAdQ/yleZP_KLz88/s1600-h/Capture4a_thumb%25255B2%25255D.png) 

Até agora, temos:

- Criou-se um mapeamento no MapForce que consulta a API da Groupon para obter informações sobre todas as divisões
- Extraí os campos de identificação da divisão
- e criei uma lista de URLs para consultas à API, de forma a obter as ofertas em cada divisão

No próximo artigo desta série, vamos processar a lista de consultas de transações como entrada para um novo componente de mapeamento e filtrar o resultado para obter informações relevantes. **Descubra por si mesmo como é fácil utilizar o MapForce para converter dados provenientes de uma API web!** 

[**Descarregue uma versão de avaliação gratuita de 30 dias**](https://www.altova.com/pt/download/mapforce/data_mapping_enterprise.html) **do MapForce.** 

**Nota do Editor:** A nossa série original sobre a utilização da API da Groupon para mapeamento de dados foi publicada em três partes. Pode consultar as partes clicando nos links abaixo: A primeira parte, "[Processamento da API da Groupon com o Altova MapForce](https://www.altova.com/blog/2011/08/processing-groupon-api-with-altova.html)", descreve como criar entradas dinâmicas através da recolha de dados de várias URLs. A segunda parte, "[Processamento da API da Groupon com o MapForce – Parte 2](https://www.altova.com/blog/2011/08/processing-groupon-api-with-mapforce.html)", explica como filtramos os dados da API e definimos a saída para extrair apenas os detalhes mais relevantes. A terceira parte, "[Processamento da API da Groupon – Parte 3](https://www.altova.com/blog/2011/08/processing-groupon-api-part-3.html)", descreve como formatar a saída como um único documento HTML, otimizado para dispositivos de secretária e dispositivos móveis, e analisa formas de automatizar a execução repetida.
