Restful API使用ガイド
このガイドでは、データ連携APIの使い方を説明します。データ連携APIを使用すると、転送ツールやSDKに依存せずに、HTTPのPOSTメソッドでThinkingAnalyticsのバックエンドに直接データを送信できます。
接続を始める前に、まずデータルールを読んでください。AEのデータ形式とデータルールを理解したうえで、このガイドを読んで接続を行ってください。
POSTメソッドでアップロードするデータはAEのデータ形式に従う必要があります
1. データ形式の変換
データをアップロードする前に、まずデータの形式をAEのデータ形式に変換する必要があります。AEのデータは1件ごとに1つのJSONです。データの例は次のとおりです(読みやすくするため、データは整形してあります):
{
"#account_id": "ABCDEFG-123-abc",
"#distinct_id": "F53A58ED-E5DA-4F18-B082-7E1228746E88",
"#type": "track",
"#ip": "192.168.171.111",
"#time": "2017-12-18 14:37:28.527",
"#event_name": "test",
"properties": {
"#lib": "LogBus",
"#lib_version": "1.0.0",
"#screen_height": 1920,
"#screen_width": 1080,
"argString": "abc",
"argNum": 123,
"argBool": true
}
}
具体的なデータ形式の仕様については、データ形式の章を参照してください。
2. データ送信
JSONデータの準備ができたら、データを送信できます。AEのバックエンドはHTTP標準のPOST方式による呼び出しリクエストを受け付けます。すべてのインターフェースのデータの文字コードはUTF-8です。具体的な呼び出し方法は次のとおりです:
2.1 データ受信インターフェース(送信方式はform-data)
クラウドサービスをご利用の場合は、次のURLを入力してください:
https://global-receiver-ta.thinkingdata.cn/sync_data
プライベートデプロイ版をご利用の場合は、次のURLを入力してください:
http://データ収集アドレス/sync_data
2.1.1 受信パラメーター(requestBodyに記述)
-
1件のjsonデータの場合:
- パラメーター1:appid=プロジェクトのAPPID
- パラメーター2:data=JSONデータ。UTF-8エンコードで、urlencodeが必要です
- パラメーター3:client=0。デフォルトは0です。1に設定すると、送信元のipを#ipフィールドとして使用します(強制的に置き換え)
-
複数件のデータの場合:
- パラメーター1:appid=プロジェクトのAPPID
- パラメーター2:data_list=JSONArray形式のデータ。複数のJSONデータを含み、UTF-8エンコードで、urlencodeが必要です
- パラメーター3:client=0。デフォルトは0です。1に設定すると、送信元のipを#ipフィールドとして使用します(強制的に置き換え)
注意 : 言語によってはライブラリがurlencodeを自動で行う場合があり、その場合は再度urlencodeする必要はありません。例えば、Python3のrequestsライブラリ、postmanでのリクエストテストなどです
以下では、curlでRESTful APIを呼び出す方法を示します。次のデータが元データです
{
"#account_id": "testing",
"#time": "2019-01-01 10:00:00.000",
"#type": "track",
"#event_name": "testing",
"properties": {
"test": "test"
}
}
上記のデータは、まずurlencodeする必要があります
%7b%22%23account_id%22%3a%22testing%22%2c%22%23time%22%3a%222019-01-01+10%3a00%3a00.000%22%2c%22%23type%22%3a%22track%22%2c%22%23event_name%22%3a%22testing%22%2c%22properties%22%3a%7b%22test%22%3a%22test%22%7d%7d
パラメーターを追加して、データを送信します
curl "http://receiver:9080/sync_data" --data "appid=test-sdk-appid&data=%7b%22%23account_id%22%3a%22testing%22%2c%22%23time%22%3a%222019-01-01+10%3a00%3a00.000%22%2c%22%23type%22%3a%22track%22%2c%22%23event_name%22%3a%22testing%22%2c%22properties%22%3a%7b%22test%22%3a%22test%22%7d%7d"
2.1.2 レスポンスパラメーター
レスポンスパラメーターとしてcode: 0を受け取った場合は、データ転送に成功したことを表します
2.1.3 Debugモード
アップロードパラメーターにdebugパラメーターを追加できます(つまり、アップロードパラメーターはappid、data\data_list、debugの3つになります)。省略可能で、デフォルトはオフです
Debugモードは少量のテストデータをアップロードする場合にのみオンにしてください。本番環境ではDebugモードをオンにしないでください
debug=1の場合、レスポンスには詳細なエラー原因が表示されます。例:
{"code":-1,"msg":"#time字段格式不对,需传递[yyyy-MM-dd HH:mm:ss]或者[yyyy-MM-dd HH:mm:ss.SSS]格式"}
2.2 データ受信インターフェース(送信方式はraw)
クラウドサービスをご利用の場合は、次のURLを入力してください:
https://global-receiver-ta.thinkingdata.cn/sync_json
プライベートデプロイ版をご利用の場合は、次のURLを入力してください:
http://データ収集アドレス/sync_json
2.2.1 受信パラメーター(requestBodyに記述)
- 1件のjsonデータの場合:
{
"appid": "debug-appid",
"debug": 0,
"data": {
"#type": "track",
"#event_name": "test",
"#time": "2019-11-15 11:35:53.648",
"properties": { "a": "123", "b": 2 },
"#distinct_id": "1111"
}
}
- 複数件のデータの場合:
[
{
"appid": "debug-appid",
"data": {
"#type": "track",
"#event_name": "test",
"#time": "2019-11-15 11:35:53.648",
"properties": { "a": "123", "b": 2 },
"#distinct_id": "1111"
}
},
{
"appid": "debug-appid",
"data": {
"#type": "track",
"#event_name": "test",
"#time": "2019-11-15 11:35:53.648",
"properties": { "a": "123", "b": 2 },
"#distinct_id": "1111"
}
}
]
2.2.2 レスポンスパラメーター:
レスポンスパラメーターとしてcode: 0を受け取った場合は、データ転送に成功したことを表します
2.2.3 Debugモード
アップロードパラメーターにdebugパラメーターを追加できます(つまり、jsonにdebugパラメーターを追加します。現在、debugに対応しているのは1件ずつのデータのアップロードのみです)。省略可能で、デフォルトはオフです
Debugモードは少量のテストデータをアップロードする場合にのみオンにしてください。本番環境ではDebugモードをオンにしないでください
debug=1の場合、レスポンスには詳細なエラー原因が表示されます。例:
{
"code": -1,
"msg": "#time字段格式不对,需传递[yyyy-MM-dd HH:mm:ss]或者[yyyy-MM-dd HH:mm:ss.SSS]格式"
}
2.2.4 データ圧縮
RequestHeaderにcompressフィールドを追加すると、圧縮したデータをアップロードできます。例えばcompress=gzipを渡すと、サーバー側はgzipでデータを解凍します。現在対応している圧縮方式はgzipとsnappyで、デフォルトは圧縮なしです。
2.2.5 送信元ipの取得
RequestHeaderにclient=1を追加すると、サーバー側は送信元のipを#ipフィールドとして使用します(強制的に置き換え)。デフォルト値は0で、送信元のipによる置き換えは行いません
3. よくある質問
データルールのよくある質問を参照して、データ形式の問題によるデータ転送の異常を調査してください。

