---
title: "Altova MapForce를 사용하여 Groupon API를 처리하는 방법"
date: "2011-08-02"
categories: 
  - "data-integration"
  - "json"
tags: 
  - "altova-xmlspy"
  - "data-integration"
  - "data-mapping"
  - "mapforce"
  - "missionkit"
  - "web-services"
  - "xml-schema"
description: Altova MapForce를 사용하여 Groupon API와 데이터를 통합하는 방법을 알아보세요. 여기에는 스키마 생성, 데이터 집계, 그리고 출력 필터링 방법 등이 포함됩니다.
---
Status: #blog

Tags:  #altova-xmlspy #data-integration #data-mapping #mapforce #missionkit #web-services #xml-schema

Categories: [data-integration](/blog/ko/category/data-integration.md) | [json](/blog/ko/category/json.md)
# Altova MapForce를 사용하여 Groupon API를 처리하는 방법

우리는 종종 다음과 같은 것을 생각합니다 [데이터 통합 프로젝트](https://www.altova.com/ko/mapforce/data-integration.html) 데이터 입력 파일 하나를 다른 데이터 세트로 변환하는 과정이지만, [알토바 맵포스 (Altova MapForce)](https://www.altova.com/ko/mapforce.html) 이를 통해 입력 파일의 개념을 크게 확장할 수 있습니다. 예를 들어, MapForce에 함께 설치되는 "MergeMultipleFiles.mfd" 예제는 와일드카드 문자를 포함한 파일 이름을 사용하여 여러 개의 입력 파일을 하나의 출력 파일로 병합하는 방법을 보여줍니다. 

[![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) 

MapForce 매핑 입력은 반드시 물리적인 파일일 필요가 없습니다. 예를 들어, Groupon과 같은 인기 웹사이트의 API처럼, 예측 가능한 구조화된 데이터를 반환하는 URL일 수도 있습니다. 이번 블로그 게시물에서는 Altova 도구를 사용하여 웹 기반 API에서 제공되는 데이터를 가져오고, 필터링하고, 분석하고, 표시하는 방법을 설명하겠습니다. Groupon을 예시로 들어 설명할 예정입니다. 직접 따라 해보고 싶으시다면, 먼저 [http://www.groupon.com/pages/api](http://www.groupon.com/pages/api)에 접속하여 개인용 Groupon API 클라이언트 키를 요청해야 합니다. 

**문제점: 모든 거래는 지역적인 특성을 가집니다** 

Groupon 웹사이트와 이메일 구독 서비스는 지역 내 할인 정보를 찾는 데 유용하지만, 다가오는 여행을 위한 할인이나 전국 각지에 있는 친구나 가족을 위한 선물을 찾고 있다면 어떻게 해야 할까요? 물론, Groupon 웹페이지에서 각 지역을 일일이 입력할 수도 있지만, 그것은 너무나 구식적인 방법입니다. 이제 [Altova MissionKit](https://www.altova.com/ko/missionkit/software-development-tools.html)을 사용하여 자동화해 보겠습니다. Groupon API는 두 가지 URL 쿼리를 제공하며, 이 쿼리들은 데이터를 .json 또는 .xml 형식으로 반환합니다. 첫 번째 쿼리는 모든 Groupon 지역 목록(이하 "구역"이라고 함)을 반환하고, 두 번째 쿼리는 특정 구역에 대한 현재 할인 정보를 반환합니다. 만약 여러 구역의 모든 할인 정보를 확인하고 싶다면, 여러 URL을 처리하고 데이터를 하나의 결과로 통합해야 합니다. 물론, MapForce가 이 작업을 수행할 수 있습니다! 

**우선, 스키마가 필요합니다** 

Groupon API 설명서에는 요청에 의해 반환되는 요소들이 설명되어 있지만, XML 스키마는 제공되지 않습니다. 괜찮습니다. 우리는 MapForce를 사용하여 XML 스키마를 생성할 수 있습니다. 해야 할 일은 새로운 매핑 디자인을 열고 "XML 스키마/파일 삽입"을 선택한 다음 "URL로 전환" 버튼을 클릭하는 것입니다. 이제 Groupon의 분류 목록을 가져올 수 있는 URL을 입력할 수 있습니다

[![URL을 사용하여 MapForce 매핑에 새 구성 요소를 추가하는 방법](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) 

맵포스(MapForce)에서 "열기" 버튼을 클릭하면, 스키마를 생성할지 묻는 메시지가 나타납니다 

[![MapForce는 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) 

"예"를 클릭하면 "파일/저장" 대화 상자가 열립니다. 저는 스키마를 "divisions.xsd"라는 이름으로 저장했고, 새로 삽입된 XML 스키마와 함께 매핑된 내용은 다음과 같습니다 

[![MapForce 디자인에서 새로운 구성 요소로 .xsd 파일을 생성했습니다](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) 

XML 스키마 구성 요소의 속성 대화 상자에는 "입력 XML 파일" 필드에 API/divisions URL이 자동으로 포함되어 있습니다

[![생성된 .xsd 파일의 구성 요소 속성](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) 

**작업 결과 확인** 

저희는 그루폰의 사업 부문 데이터를 필터링하여 각 지역에 대한 프로모션 검색에 사용할 ID 목록을 만들고 싶습니다. 하지만 더 진행하기 전에, "[복잡한 함수를 위한 빠른 해결책](https://www.altova.com/blog/2011/06/quick-solution-for-complicated.html) 블로그 게시글에서 소개한 텍스트 파일 활용 방법을 사용하여 ID 값을 확인하는 것이 지금 좋은 시점일 수 있습니다. 텍스트 파일을 삽입하고 사업 부문과 ID 스키마 요소를 연결하면, 다음과 같은 매핑이 나타납니다 

[![MapForce 디자인을 사용하여 텍스트 파일을 통해 결과물을 미리 확인할 수 있습니다](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) 

텍스트 파일 내에서 각 고유한 구분자(division)에 대해 새로운 행을 생성하기 위해, 구분자 요소를 텍스트 파일의 행과 연결했습니다. 이렇게 하면 각 행의 "Field1" 필드에 해당 식별자(id)가 저장됩니다. 이제 "출력" 버튼을 클릭하면 다음과 같은 결과가 생성됩니다

[![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) 

우리가 해야 할 일은 단순히 "concat [문자열 결합](https://www.altova.com/ko/mapforce/data-processing-functions.html) 함수를 사용하여 모든 사업부 ID에 대한 "/deal" URL 목록을 만드는 것입니다. 다음 단계는 다음과 같습니다 

[![MapForce의 "concat" 함수를 사용하여 문자열을 생성합니다](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) 

"concat" 함수의 "value1"에 연결된 변수에 커서를 올리면 해당 변수의 전체 정의가 표시됩니다 

[![맵포스(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) 

매핑 작업을 실행하기 위해 "출력" 버튼을 클릭하면, 출력 파일은 이제 다음과 같은 모습으로 나타납니다 

[![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) 

추가적으로, 생성된 XML 스키마를 XMLSpy에서 열고, 그래픽 스키마 보기로 표시할 수 있습니다 

[![Altova XMLSpy에서 생성된 .xsd 파일의 시각적 스키마 보기](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) 

지금까지 우리는 다음과 같은 결과를 얻었습니다

- 모든 사업 부문에 대한 정보를 가져오기 위해 Groupon API를 쿼리하는 MapForce 매핑을 구축했습니다
- 분류 ID 필드를 추출했습니다
- 그리고 각 사업 부문별로 제공되는 상품 정보를 얻기 위해 API 쿼리에 사용할 URL 목록을 만들었습니다

다음 게시물에서는 이 시리즈의 다음 단계로, 거래 관련 문의 목록을 새로운 매핑 구성 요소의 입력으로 사용하고, 그 결과를 분석하여 흥미로운 정보를 추출하겠습니다. **직접 MapForce를 사용하여 웹 API에서 데이터를 변환하는 것이 얼마나 쉬운지 확인해 보세요!** 

[**MapForce의 30일 무료 체험판을 다운로드하세요.**](https://www.altova.com/ko/download/mapforce/data_mapping_enterprise.html) **** 

**편집자의 글:** 저희가 제공했던 Groupon API 데이터를 활용한 시리즈는 총 세 부분으로 구성되어 있으며, 아래 링크를 클릭하시면 각 부분을 확인하실 수 있습니다. 1부, [Altova MapForce를 사용하여 Groupon API 처리하기](https://www.altova.com/blog/2011/08/processing-groupon-api-with-altova.html)에서는 여러 URL에서 데이터를 수집하여 동적인 입력 데이터를 생성하는 방법을 설명합니다. 2부, [MapForce를 사용하여 Groupon API 처리하기 – 2부](https://www.altova.com/blog/2011/08/processing-groupon-api-with-mapforce.html)에서는 API에서 데이터를 필터링하고, 가장 흥미로운 정보만 추출하도록 출력 형식을 정의하는 방법을 설명합니다. 3부, [Groupon API 처리 – 3부](https://www.altova.com/blog/2011/08/processing-groupon-api-part-3.html)에서는 데스크톱 및 모바일 기기에 최적화된 단일 HTML 문서로 출력을 포맷하는 방법과, 반복적인 작업을 자동화하는 방법을 소개합니다.
