質問
REST APIジョブへPOSTリクエストを送信した際、\b(バックスペース / 0x08)や\f(フォームフィード / 0x0C)を含むリクエストがHTTP 400エラーになります。原因と推奨されるエスケープ方式を教えてください。
回答
HULFT Square のREST APIジョブは、内部的にJSONデータをXMLに変換して処理する仕様です。そのため、JSONとして有効な文字であっても、W3C XML 1.0仕様のコードポイント範囲外の文字が含まれる場合はエラーとなります。
各制御文字のXML 1.0有効範囲との照合結果は以下のとおりです。
- \t(TAB / 0x09)→ #x9 に該当 → XML有効
- \n(LF / 0x0A)→ #xA に該当 → XML有効
- \r(CR / 0x0D)→ #xD に該当 → XML有効
- \f(FF / 0x0C)→ 上記範囲外 → XML不正
- \b(BS / 0x08)→ 上記範囲外 → XML不正
\b(0x08)および\f(0x0C)はXML 1.0の有効範囲外であるため、HULFT Square側の仕様として処理が失敗します。
制御文字のエスケープ方式ごとの可否は以下のとおりです。
- (A) 生のバイナリ制御文字(0x08, 0x0C)→ 使用不可
- (B) JSON Unicodeエスケープ表記(\u0008, \u000c)→ サロゲートペアに該当するため使用不可
- (C) 2文字のエスケープ表記(\b, \f)→ 推奨。それぞれ \\b、\\f と記載することで受信可能であることをサポートにて確認済み
補足
- \f(0x0C)が一部成功するケースは想定外の動作の可能性があります。安定稼働のためには、\f を含むデータの送信は避けることを推奨します。
- リクエスト実行前に、サポート定義外の不正な文字がリクエスト本文に含まれていないか確認し、該当文字を置き換えることで事象を回避できます。
- 参考:[REST]PUT実行(JSON処理仕様): https://www.hulft.com/help/ja-jp/HULFTSquare/Content/Designer/Connector/rest_execute_http_put.htm
- 参考:JSON形式データに含まれる文字について: https://support.square.hulft.com/hc/ja/articles/36467615973268
コメント
0件のコメント
記事コメントは受け付けていません。