DX SuiteのAPIは、お客様のアプリケーションに柔軟に統合できる強力なツールです。しかし、設定ミスや設計上の問題が原因で意図しないトラブルが発生する場合があります。本ガイドでは、一般的なAPI設定のベストプラクティスや基本的な利用方法をわかりやすく解説します。
APIの活用概要
DX Suite APIを使用することで、以下の業務プロセスを効率化できます。
- ユニットの作成・管理
- CSVファイルや結果データのエクスポート
APIの利用方法や注意点については、ヘルプセンターの記事もご参照ください。
APIの基本的な使い方
APIを利用する際の基本的な操作方法を以下に示します。
-
リクエストの作成
- 必要なヘッダーやパラメータを正確に設定します。
- エンドポイントやHTTPメソッド(GET、POSTなど)を適切に指定してください。
-
レスポンスの確認
- ステータスコードを確認し、200(成功)以外のレスポンスに対する処理を実装します。
- レスポンスデータを正確に解析し、必要な情報を抽出します。
-
認証とセキュリティ
- APIキーを使用して認証を行います。APIキーは安全に保管し、権限のないメンバーには共有しないようご注意ください。また、不要になったAPIキーは速やかに削除してください。
APIのサンプルフロー
API設定のベストプラクティス
(1) エラー処理の設計
- ステータスコードの確認
APIレスポンスのステータスコード(例: 200, 400, 500)を確認し、それに応じたエラーハンドリングを実装します。 - 再試行(リトライ)の設計
一時的なエラー(例: 406や409)が発生した場合、指数バックオフアルゴリズム等を活用して再試行してください。
(2) ステータス確認の設計
-
推奨される使い方
ユニットのステータスを確認し、必要な状態(例: 処理完了)に達していることを確認してから次の処理に移ってください。
-
避けるべき使い方
ステータスを確認せずに次の処理に移行する設計は避けてください。この方法はエラー発生率を高め、処理効率を著しく低下させる可能性があります。
(3) タイムアウトの設定
API応答が遅延した場合にアプリケーションが停止しないよう、適切なタイムアウトを設定してください。
(4) ログの記録
APIのリクエストやレスポンスを詳細に記録し、トラブルシューティングを容易にします。特に、エラー時のレスポンスに含まれるエラーコードやメッセージは、弊社での調査時に必要となるため、必ず記録・保管してください。
(5) 予期しないエラーのキャッチ
汎用例外をキャッチすることで、想定外のエラーに対応できます。
(6) レートリミットと負荷分散の考慮
現在、当社APIにはレートリミットの仕組みはありませんが、ステータス確認のリクエストは最低でも1秒間以上の間隔を開けて実行してください。また、大量のリクエストを送信する際は以下をご参照ください。
【注意事項】大量に帳票をアップロードする予定があるユーザ様へ
API設定例
以下は、DX Suite APIを使用して仕分けユニットを追加し、読取ユニットのステータスを確認し、CSVをダウンロードするまでの流れを示したPythonコードでのリクエスト例です。
コードの解説
-
仕分けユニットの追加
- /units/sortを使用して仕分けユニットを作成。
- 仕分け実行(runSorting)と、OCR送信(sendOcr)を有効化。
-
仕分けユニットから読取ユニットを特定
- /units/sort/{unitId}で紐づく読取ユニットIDを取得。
-
読取ユニットのステータス確認
- /units/searchで複数の読取ユニット情報を取得。
- 読取ユニットIDを絞り込み、ステータス(csvDownloadStatusとdataProcessingStatus)を確認。条件を満たす場合にCSVダウンロードへ進む。満たしていない場合は、一定の間隔を開けて再実行する。
-
CSVダウンロード
- /units/{unitId}/csvで指定されたユニットのCSVを取得し、ローカルに保存。
リクエスト例
1. 仕分けユニットの追加
python
import requests
import os
# 設定
BASE_URL = "https://sample.dx-suite.com/wf/api/standard/v2" # サブドメインを入力
API_KEY = "your_api_key_here" # APIキーを入力
SORT_CONFIG_ID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" # 仕分けルールID
SORT_UNIT_NAME = "apitest" # 仕分けユニット名
FILE_PATHS = [
"C:\\Users\\your_name\\test.jpg",
"C:\\Users\\your_name\\sample.pdf"
]
# リクエスト
url = f"{BASE_URL}/sorter/add"
headers = {"apikey": API_KEY}
files = [("files", (os.path.basename(path), open(path, "rb"))) for path in FILE_PATHS]
data = {
"sortConfigId": SORT_CONFIG_ID,
"sortUnitName": SORT_UNIT_NAME,
"runSorting": "true",
"sendOcr": "true"
}
response = requests.post(url, headers=headers, data=data, files=files)
print(f"Response: {response.status_code} - {response.text}")
# ファイルクローズ
for _, file_obj in files:
file_obj[1].close()
2. 仕分けユニットの検索
python
import requests
# 設定
BASE_URL = "https://sample.dx-suite.com/wf/api/standard/v2" # サブドメインを入力
API_KEY = "your_api_key_here" # APIキーを入力
SORT_UNIT_ID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" # 作成された仕分けユニットID
# リクエスト
url = f"{BASE_URL}/sorter/status"
headers = {"apikey": API_KEY, "Content-Type": "application/x-www-form-urlencoded"}
data = {"sortUnitId": SORT_UNIT_ID}
response = requests.post(url, headers=headers, data=data)
print(f"Response: {response.status_code} - {response.text}")
3. 読取ユニットの検索
python
import requests
# 設定
BASE_URL = "https://sample.dx-suite.com/wf/api/standard/v2" # サブドメインを入力
API_KEY = "your_api_key_here" # APIキーを入力
READ_UNIT_ID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" # 紐づく読取ユニットID
# リクエスト
url = f"{BASE_URL}/units"
headers = {"apikey": API_KEY}
params = {"unitId": READ_UNIT_ID}
response = requests.get(url, headers=headers, params=params)
print(f"Response: {response.status_code} - {response.text}")
4. CSVのダウンロード
python
import requests
# 設定
BASE_URL = "https://sample.dx-suite.com/wf/api/standard/v2" # サブドメインを入力
API_KEY = "your_api_key_here" # APIキーを入力
UNIT_ID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" # 読取ユニットID
# リクエスト
url = f"{BASE_URL}/units/{UNIT_ID}/csv"
headers = {"apikey": API_KEY}
response = requests.get(url, headers=headers)
print(f"Response: {response.status_code}")
if response.status_code == 200:
file_name = f"unit_{UNIT_ID}.csv"
with open(file_name, "wb") as file:
file.write(response.content)
print(f"CSV saved as {file_name}")
補足
- エラーハンドリング: サンプルコードには含めていませんが、実装時には適切なエラーハンドリングを追加してください。
- リトライ処理: 状況に応じてリトライロジックを適用してください(例: タイムアウトや一時的なエラーへの対応)。
お問い合わせ
当社APIの仕様や使用方法に関するご質問については、サポートチームが対応いたします。ただし、以下はサポート対象外となります。
- プログラムやコマンドの具体的な記述方法
- アプリケーションへの組み込み方法
不明点がある場合は、ヘルプセンターをご参照ください。