---
title: "웹 서비스 데이터 매핑에서 HTTP 오류 처리하기"
date: "2019-06-19"
categories: 
  - "data-integration"
  - "tools"
tags: 
  - "data-mapping"
  - "flowforce-server"
  - "http-testing"
  - "mapforce"
  - "mapforce-server"
  - "web-services"
description: MapForce를 사용하여 웹 서비스 데이터 매핑 과정에서 발생하는 HTTP 오류를 처리하는 방법을 알아보세요. 이를 통해 자동화된 프로젝트에서 안정적인 데이터 통합과 오류 보고를 보장할 수 있습니다.
---
Status: #blog

Tags:  #data-mapping #flowforce-server #http-testing #mapforce #mapforce-server #web-services

Categories: [data-integration](/blog/ko/category/data-integration.md) | [development](/blog/ko/category/development.md)
# 웹 서비스 데이터 매핑에서 HTTP 오류 처리하기

외부 웹 서비스에서 가져온 정보를 포함하는 데이터 통합 프로젝트는 원격 데이터를 가져오는 과정에서 HTTP 오류에 취약할 수 있습니다. 데이터 매핑이 자동화된 방식으로 실행될 때는 오류가 매우 드물게 발생하더라도 오류를 감지하고 보고하는 것이 특히 중요합니다.

MapForce 데이터 매핑은 웹 서비스 호출을 포함할 수 있으며, 그 결과를 파일이나 데이터베이스에 직접 출력하거나, 추가 처리를 위해 다른 입력과 결합할 수 있습니다. 최종 출력 방식에 관계없이, REST 웹 서비스 요청 과정에서 발생하는 HTTP 웹 서비스 오류는 매핑 작업에 위험을 초래할 수 있습니다.

MapForce는 매핑 작업 중 오류가 발생했을 때 단순히 중단하는 대신, HTTP 오류를 처리할 수 있는 기능을 제공합니다. 개발자는 REST 웹 서비스 호출 시 반환되는 HTTP 상태 코드에 따라 예외를 처리하고 보고하도록 설정할 수 있습니다.

예시를 하나 살펴봅시다.

![](/blog/images/cbcr_blog_2.jpg)

<!--more-->

MapForce에 함께 설치되는 샘플 데이터 매핑에는 실제 REST 웹 서비스 매핑인 "AirportStatus.mfd"가 포함되어 있습니다. 이 매핑은 미국 연방항공청(Federal Aviation Administration)에서 제공하는 웹 서비스를 호출하여 주요 미국 공항의 운항 지연 정보를 제공합니다. 매핑의 입력값은 세 자리 공항 코드이며, 이 코드가 웹 서비스에 제공됩니다. 결과는 JSON 파일 형태로 반환됩니다. 매핑 내용과 예시 결과는 아래에 나와 있습니다.

[![웹 서비스 데이터 매핑 기능으로, HTTP 오류 처리를 지원하지 않습니다](/blog/images/airport-status-mapping.png)](airport-status-mapping.png)

[![예제 매핑에서 생성된 JSON 파일 출력](/blog/images/mapping-result.png)](mapping-result.png)

HTTP 오류가 발생하면 매핑 실행은 실패합니다.

MapForce 도움말 파일에는 REST 웹 서비스 응답에 대한 조건부 처리 방법을 설명하는 내용이 포함되어 있습니다. HTTP 오류 처리를 위한 부분을 기존 매핑에 간단히 붙여넣을 수는 있지만, HTTP 오류 발생 시 결과를 검증할 방법은 없습니다. 테스트를 위해 FAA 웹 서비스가 의도적으로 HTTP 오류를 발생시키도록 강제할 수는 없습니다!

대신, httpstat.us 웹 서비스를 사용하여 다양한 HTTP 상태 코드와 설명을 생성하여 별도의 데이터 매핑 테스트에 활용할 수 있습니다. 예를 들어, 브라우저에서 [https://httpstat.us/200](https://httpstat.us/200) 주소에 접속하면 "200 OK"라는 메시지가 표시됩니다. [https://httpstat.us/400](https://httpstat.us/400) 주소는 "400 Bad Request"를 반환하며, 정의된 모든 상태 코드(최대 524까지)에 대해 이와 같은 방식으로 작동합니다.

이 서비스를 위해 MapForce에서 REST 요청을 구현하려면, 새 매핑 파일을 열고 도구 모음에서 "웹 서비스 삽입" 버튼을 클릭하기만 하면 됩니다

![데이터 매핑 과정에 웹 서비스 기능을 추가하는 것](/blog/images/insert-web-service-function.png)

이렇게 하면 "웹 서비스 호출 설정" 대화 상자가 열리며, 여기서 설정을 수동으로 구성할 수 있습니다. 특정 상태 코드 대신 파라미터를 사용하여 다양한 값을 쉽게 테스트할 수 있습니다.

[![웹 서비스 호출 설정 구성](/blog/images/web-service-call-settings.png)](web-service-call-settings.png)

다음은 코드 매개변수를 제공하기 위한 상수 매핑 정보입니다

[![데이터 매핑에서 입력 매개변수를 사용하는 웹 서비스](/blog/images/mapping-1.png)](mapping-1.png)

기본적으로 웹 서비스 기능은 200~299 범위의 일반적인 HTTP 응답 값만 지원합니다. 다른 코드에 대한 지원을 추가하려면, 응답(Response) 섹션에서 "Body" 요소를 마우스 오른쪽 버튼으로 클릭하여 "응답 구조(Response Structure)" 대화 상자를 열고, 허용되는 상태 코드 범위를 확장할 수 있습니다

[![지원되는 HTTP 상태 코드 범위를 확장하여 HTTP 오류를 처리합니다](/blog/images/response-structure.png)](response-structure.png)

REST 요청의 결과를 `decode-mime-entity` 함수를 사용하여 간단한 텍스트 파일로 변환할 수 있습니다. 웹 서비스가 응답 헤더에 문자 인코딩 값을 제공하지 않으므로, 디코딩 함수에 `utf-8`이라는 상수 값을 연결하겠습니다.

[![HTTP 오류를 텍스트 형식으로 저장된 메시지로 매핑하여 처리합니다](/blog/images/mapping-2.png)](mapping-2.png)

이제 맵포스 매핑 창 하단에 있는 "실행" 버튼을 사용하여 매핑 작업을 실행하고 결과를 확인할 수 있습니다

![매핑 메시지의 첫 번째 테스트 결과](/blog/images/result-1.png)

 매핑 창에서 입력 상수를 변경하고 다시 실행하여 변경 사항을 확인할 수 있습니다

![매핑 메시지의 두 번째 테스트 결과](/blog/images/result-2.png)

결과를 다른 정보와 결합하여 사용자에게 더 유용한 상태 메시지를 만들 수 있습니다. 이를 위해 `concat` 함수를 사용할 수 있습니다

[![더 완전한 메시지 결과의 정의](/blog/images/elaborate-message.png)](elaborate-message.png)

![더욱 사용하기 쉬운 지도 안내 메시지](/blog/images/result-3.png)

다양한 HTTP 상태 코드를 사용하여 매핑을 테스트하고, 결과에 만족하면 기존의 AirportStatus.mfd 매핑에 HTTP 오류 처리를 복사-붙여넣기 방식으로 추가할 수 있습니다. 먼저, 일반적인 범위 이상의 응답 코드를 처리하기 위해 AirportStatus 매핑에 새로운 응답 본문을 생성합니다. 웹 서비스의 응답 측면에서 "Body" 항목을 마우스 오른쪽 버튼으로 클릭하여 새로운 "Body" 노드를 추가할 수 있습니다.

![HTTP 오류를 별도의 응답 본문을 사용하여 처리하는 방법](/blog/images/add-body-node.png)

이렇게 하면 새로운 본문이 추가되고 "응답 구조" 대화 상자가 열립니다. 여기서 299보다 큰 모든 HTTP 상태 코드에 대한 처리 방식을 지정할 수 있습니다

![HTTP 오류를 처리하기 위해, 상태 코드 값의 범위를 지정합니다](/blog/images/response-structure-2.png)

이제 오류 처리 정의의 매핑 구성 요소를 테스트 매핑에서 복사하여 에어포트 스테이터스 매핑에 붙여넣고, 새로 추가된 응답 본문과 연결할 수 있습니다

[![REST 웹 서비스 데이터 매핑에서 HTTP 오류 처리](/blog/images/copy-error-handling.png)](copy-error-handling.png)

현재 매핑은 여러 개의 출력 결과를 지원하도록 정의되어 있습니다. MapForce에서 수동으로 실행할 때, 사용자는 여러 출력 결과 중 하나를 선택할 수 있습니다. HTTP 오류 처리를 위한 실행 경로의 값은, 매핑이 [MapForce 서버](https://www.altova.com/ko/mapforce-server) 또는 정기적으로 예약된 [FlowForce 서버](https://www.altova.com/ko/flowforceserver) 작업을 통해 자동 제어 하에 실행될 때 명확해집니다. 예를 들어, 자동 데이터 매핑은 매 시간마다 50개의 공항에 대한 상태를 보고할 수 있습니다.

자동 실행 과정에서 모든 데이터 매핑 출력 경로가 처리됩니다. 웹 서비스가 각 입력에 대해 단 한 번만 호출되도록 하기 위해, 중간 구성 요소가 최종 대상에 매핑되기 전에 웹 서비스 결과를 먼저 수집합니다. HTTP 오류가 발생하면, 날짜, 시간, 그리고 정확한 HTTP 상태 코드가 기록됩니다.

REST 웹 서비스 데이터 매핑에서 HTTP 오류를 처리하는 것은 안전벨트나 소화기처럼, 있으면 매우 좋지만, 사용해야 할 일이 없기를 바라는 것과 같습니다!

MapForce를 처음 사용하시는 경우, 이 [동영상 소개](https://youtu.be/a83na6G9FjI)를 통해 기본적인 내용을 확인해 보세요. 또한, [30일 무료 체험](https://www.altova.com/ko/mapforce/download)을 통해 MapForce를 직접 사용해 보실 수도 있습니다.
