質問
APIマネジメントでZipファイルを送受信したいのですが、どのような方法がありますか?また、それぞれのファイルサイズ制限について教えてください。
回答
APIマネジメントでZipファイルを送受信する方法は、大きく分けて以下の2つがあります。
■方法1:リクエストボディにそのまま入れる方式
【特徴】
・クライアント側でZipファイルをbase64でエンコードする必要があります
・XML形式でリクエストボディを記載します
・ファイルサイズ制限:最大10MB(送信)
【設定手順(Postmanの場合)】
1. Zipファイルをbase64でエンコードする
- Windowsの場合:`certutil -f -encode "入力ファイル" "出力ファイル"`
- 出力ファイルの-----BEGIN CERTIFICATE-----と-----END CERTIFICATE-----の間の文字列から改行を取り除く
2. Postmanでボディを[Raw]として設定する
3. 中身をXML形式で記載する(改行なし)
例:`
4. 画面右側の[整形]ボタンを押して整形する
【重要な注意事項】
・REST APIプロジェクト側で[リクエスト設定] - [リクエスト本文]をXML形式で受け取る設定にする必要があります
・XML形式のリクエストボディの「body」タグ内に改行が含まれていると、ファイルシステム書き込み処理に失敗します
・base64エンコードが必要な理由:XML形式で送信するため、バイナリデータをテキスト形式に変換する必要があります
■方法2:マルチパート方式
【特徴】
・クライアント側でZipファイルをbase64でエンコードする必要はありません
・ファイル名やContent-Typeなどのメタデータを適切に管理できます
・ファイルサイズ制限:最大4MB(送信・受信ともに)
【参考FAQ】
・REST APIジョブにマルチパートでアップロードするファイルのファイル名を指定したい
・APIリクエストにファイルを添付してストレージにデータを送りたい
■各方式の比較
| 項目 | リクエストボディ方式 | マルチパート方式 |
|------|---------------------|------------------|
| base64エンコード | 必要 | 不要 |
| 最大ファイルサイズ | 10MB | 4MB |
| メタデータ管理 | 手動 | 自動 |
| 設定の複雑さ | やや複雑 | シンプル |
■10MBを超えるファイルの送受信について
ファイルサイズが10MBを超える場合は、以下の対応が必要です:
1. クライアント側でファイルを分割してPUTする
2. 分割ファイルをGETする際の実装方法を検討する
- ファイル名をクエリーパラメータで指定して異なる名前でアップロード
- ファイルイベントジョブなどを活用してファイル名一覧を通知
- 異なるクライアント間でのファイル名連携方法を設計
※大容量ファイルの連携が必要な場合は、FTPコネクターなど他のHULFT Square機能の利用もご検討ください。
・APIプロジェクトで取り扱えるリクエストデータおよびレスポンスデータには10MBのサイズ制限があります(マニュアル「APIプロジェクト」参照)
・APIプロジェクトに対して送ることができるリクエスト本文は4MBのサイズ制限があります
コメント
0件のコメント
記事コメントは受け付けていません。