---
title: "自動データ連携時のHTTPエラーの処理"
date: "2019-07-29"
categories: 
  - "data-integration"
  - "json"
  - "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/ja/category/data-integration.md) 
# 自動データ連携時のHTTPエラーの処理

データアナリストやその他の専門家は、Webサービスを呼び出し、その結果を保存するデータ処理を自動的に実行することで、リアルタイムのデータを生成する必要があることがよくあります。自動実行中に、統合タスクを中断するのではなく、予期せぬHTTPエラーを適切に処理することが重要です。

以前の投稿で、私たちは～について議論しました [REST Webサービスからの応答に対する条件付き処理](https://www.altova.com/blog/handling-http-errors/) HTTPエラーの処理について、以前は正常な応答とエラーに対してそれぞれ別の出力ファイルが生成されていましたが、今回、空港のステータスを例に、修正されたマッピングソリューションを紹介します。このソリューションでは、要求された空港のステータス、またはエラーの説明を記載した単一のマッピング結果ファイルが生成されます。

![](/blog/images/airport_flip_700x335.jpg)

<!--more-->

一つの解決策として、以前に作成したMapForceのマッピングで生成される各出力ファイルを、中間的な要素として扱い、それらを最終的な結果にマッピングすることで、両方の可能性を考慮した結果を得ることができます。

しかし、よりシンプルな解決策として、正常な応答とエラー結果を、それぞれを一つの出力要素に直接マッピングする方法があります。

以前の記事を公開した後、FAA（アメリカ連邦航空局）の空港情報を提供するWebサービスについて、空港コードのフィールドが空の場合、エラーが発生することを発見しました。これにより、HTTP 404エラーが発生します。残念ながら、このエラーに関するWebサービスの応答は、リクエストヘッダーに記載されている仕様にもかかわらず、JSON形式ではなくHTML形式で提供されます

![データマッピングにおいて、WebサービスにおけるGETリクエストのパラメータを指定します。](/blog/images/web-service-parameters.png)

レスポンスで返されるステータスコードを直接参照することで、HTMLの解析エラーを回避することができます

![レスポンスからステータスコードを取得し、それに基づいてHTTPエラーを処理します](/blog/images/status-code.png)

まず、対象となるコンポーネントのJSONスキーマに、エラーが発生した場合にメッセージを格納するための項目を追加する必要があります。これは、XMLSpyの[グラフィカルJSONスキーマエディタ](https://www.altova.com/ja/xmlspy-xml-editor#json_schema)を使用することで簡単に実現できます

[![グラフィカルなJSONスキーマエディタ](/blog/images/enhanced-json-schema.png)](enhanced-json-schema.png)

詳細設定ウィンドウでは、「発生」の項目を「オプション」に設定しています。これは、HTTPエラーが発生した場合にのみ、この項目が生成されるようにするためです。

これで、200より大きいすべてのHTTPステータスコードに基づいて、カスタムのエラーメッセージを作成できるようになりました

[![HTTPエラーが発生した場合、カスタムのエラーメッセージを結果に反映させることで、エラー処理を行います](/blog/images/error-msg-mapping.png)](error-msg-mapping.png)

上記のconcat関数は、ステータスコードと空港コードを組み合わせて、エラーに関する詳細な説明を生成します。

以下に、ステータスコードと出力コンポーネントの関係を示す、改訂版のマッピング図全体を示します

[![HTTPエラーを処理する際に、正常な結果とエラーが発生した場合のそれぞれに対して、別の処理経路を用意します](/blog/images/revised-mapping-1030x576.png)](revised-mapping.png)

マッピングの左上に表示されている空港コードの定数を編集し、その後、メインのマッピングウィンドウの下にある「出力」ボタンをクリックして、さまざまな入力値をテストすることができます。ウェブサービスへのGETリクエストに有効な空港コードが含まれている場合、結果は期待されるJSONファイルになります

![HTTPエラーの処理：マッピングが正常に完了した場合の結果を表示します](/blog/images/normal-result.png)

空港コードの定数に空の文字列を送信することで、HTTPエラーを発生させることができます。これにより、JSON形式のエラー応答ファイルが生成されます

![HTTPエラーが発生した場合、結果にメッセージを表示します](/blog/images/error-result.png)

なお、当社のマッピングでは、HTTPステータスコード200～299と300～599に対して、それぞれ別のレスポンスボディを扱っています。これにより、出力されるデータが有効なJSON形式のみであることを保証しています。HTML形式で受信されたエラー結果はマッピングされず、単純に破棄されます。

![HTTPエラーの処理方法：ウェブサービスがHTML形式で提供するエラー結果の例を示します](/blog/images/error-message-2.png)

### データマッピングを自動化し、HTTPエラーを処理します

以前の記事で、定期的なスケジュールに基づいて、50の空港の状況をチェックし、記録する自動化のシナリオについて説明しました。これを実現するためには、Webサービスを呼び出し、各空港コードに対応する結果を抽出する必要があります。

元のマッピングは、すでに自動化を考慮して設計されています。MapForce Serverは、クロスプラットフォームに対応したサーバーツールであり、[MapForceで設計されたデータマッピングの実行を自動化します](https://www.altova.com/ja/mapforce-server) マッピングの左上にあるコンポーネントは、文字列定数の後に続く入力パラメータであり、MapForce Serverによる実行時に指定することができます。

![自動マッピング実行のための入力パラメータコンポーネント](/blog/images/automating-input.png)

スクリーンショットに表示されている文字列「PHX」は、MapForceで直接実行を行う場合にのみ使用されます。

FlowForce Serverは、高度にカスタマイズ可能なサーバーソフトウェアです [企業レベルのデータ統合タスクを効率的に自動化するための、ワークフローエンジン](https://www.altova.com/ja/flowforceserver). FlowForce Serverのジョブは、MapForce Serverを使用して、必要な空港コードごとに一度マッピング処理を実行し、その後、定期的なスケジュールで繰り返し実行できます。この自動化されたジョブは、HTTPエラーが発生した場合、各空港コードに対応する結果ファイルを作成し、そのファイルには最新のステータス情報またはエラー内容が記載されます。

MapForceを初めてご利用になる方は、こちらの[動画紹介](https://youtu.be/a83na6G9FjI)をご覧ください。これにより、MapForceのあらゆるデータ形式間の変換および統合機能について、基本的な内容を学ぶことができます。MapForce、MapForce Server、およびFlowForce Serverを、[30日間の無料トライアル](https://www.altova.com/ja/download)で実際に試すことも可能です。
