#やりたいこと
DataSpiderではHTTPトリガー機能を利用してWebAPIを生成することができます。
今回はそのレスポンスとなるJSON形式のデータを作成します。
#DataSpiderの仕様について
- DataSpider内部では全てXML形式でデータが扱われているので、HTTPトリガーを通じてJSON形式のデータを受け付けた場合には、トリガー内でXMLに変換されます。逆にJSON形式のデータを返却したい場合についても、内部ではXMLで定義しますが、返却時にJSONに変換されます。詳しくはこちらを確認してください。
#スクリプトサンプル
#必要なデータ形式の確認
- 取得したいデータは
object
がarray
になっている以下のような形式だとします。
[
{
"id":"1",
"first_name":"Steven",
"last_name":"Thompson",
"email":"sthompson0@spotify.com",
"gender":"Male",
"ip_address":"129.167.217.82"
},
{
"id":"2",
"first_name":"Doris",
"last_name":"Daniels",
"email":"ddaniels1@usgs.gov",
"gender":"Female",
"ip_address":"34.152.122.66"
}
]
#スクリプトの作成
##XMLファイルを読み込んでJSON形式で返却する処理を作成します。
1. スクリプト変数を作成
2. XML読取り処理を配置
3. マッピングアイコンを配置
4. Start
からxml_read
、xml_read
からmapping
へ線を引いて、最後にEnd
へ。
-
##次に返却したいJSON形式の設定を行います。
1.取得したいフォーマットのjsonファイルを作成します。今回はこちらをMOCK_DATA.JSON
というファイル名にしました。
[
{
"id":"1",
"first_name":"Steven",
"last_name":"Thompson",
"email":"sthompson0@spotify.com",
"gender":"Male",
"ip_address":"129.167.217.82"
}
]
2.作成したjsonファイルをDataSpiderのエクスプローラからアップロードします。
3.JSONファイルをXML形式に変換します。
1.XMLへの変換はネットワークカテゴリにあるRESTアダプタを利用すると便利です。
RESTであればどれでも大丈夫なのですが、今回はGETコンポーネントを利用します。
2.GETコンポーネントのレスポンス設定
を選択します。
- データ出力先をデータ
- データ形式をJSON
- に設定してJSONファイルを指定して出力スキーマを設定...
をクリックして、先程アップロードしたJSONファイルを指定します。
3.次にマッパー上で出力スキーマを設定します。
- mapping
を開いて、スクリプト変数を右クリックしてスキーマを読み込む
を選択します。
- コンポーネントから選択
のコンポーネント名でさっき設定したRESTのGETコンポーネントexecute_http_get
を選択します。
- 次にtype
属性を指定します。今回はobject
がarray
になっている形式なので、ツールパレットから単一行文字列定数
コンポーネントを使って、それぞれ設定して完了です。
- ここで利用したGETコンポーネントはスキーマの設定のためだけに利用したものですので、スキーマの設定が終わったら削除しましょう。以上で設定は完了です。
#レスポンス確認
- HTTPトリガーの設定をして実行確認を行ってください。
- 以下のような出力結果が得られると思います。
[
{
"id":"1",
"first_name":"Steven",
"last_name":"Thompson",
"email":"sthompson0@spotify.com",
"gender":"Male",
"ip_address":"129.167.217.82"
}
]
#レスポンスデータの編集
- このデータを
object
、object
の形式に編集してみます。 - 設定は簡単で、マッパーのtype属性を両方
object
に設定するだけです。
- 修正が完了したらサービスに登録を忘れずに行い、再度リクエストを行ってみてください。以下のように形式が変換されます。
{
{
"id":"1",
"first_name":"Steven",
"last_name":"Thompson",
"email":"sthompson0@spotify.com",
"gender":"Male",
"ip_address":"129.167.217.82"
}
}