複数行入力で改行が改行コードに変換されない
complete
Takuya Matsuda
テキストの複数入力をONにした状態で、実際に送信される値がデフォルトの改行コード
\n
になることがアクション実行画面では表示されますが、実行すると Malformed JSON in request body となります。結果のカスタマイズにて加工前のデータの experimantal > args ではスペースに見える値が送信されているようで、これは改行コードに置き換わってないのではと。
ソース:HTTP API
パラメーター:
- 名前:detail
- 詳細設定:テキスト(必須)、複数行入力するON、改行文字を指定するOFF
メソッド:POST
リクエストタイプ:JSON
リクエストボディ:
{
"name": "{{ name }}",
"companyId": "{{ companyId }}",
"detail": "{{ detail }}",
}
※リクエストボディで変数の前後にダブルクォーテーションを入れないと動かなかった記憶なのでそうしてますが、ドキュメントを見る限り不要のようですね。ただダブルクォーテーションなしでも挙動は変わりませんでした。
ベースマキナサポート担当
marked this post as
complete
ベースマキナサポート担当
HTTP APIアクションにおけるJSON文字列への改行文字埋め込みについて、ドキュメントに記載を追加させていただきました。
本チケットについては、BoardをBugからQuestionsへ移動させていただきます。
ベースマキナサポート担当
お問い合わせいただきありがとうございます。
HTTP APIのリクエストボディに対するアクションパラメーターの値の入力は、基本的に単純置換となります。
そのため、
テキスト
型のパラメーターで、改行文字を指定しなかった場合は以下のような挙動となります。リクエストボディ
{
"detail": "{{ detail }}",
}
detailパラメーターの入力内容
1行目
2行目
送信されるリクエストボディ
{
"detail": "1行目
2行目",
}
このようなJSONは無効となるので、JSONに対する複数行テキストの入力では、「改行文字を指定する」オプションにて、明示的に「\\n」(
\
2つ)を指定して頂く必要があります。改行文字を「\\n」に設定した場合に送信されるリクエストボディ
{
"detail": "1行目\n2行目",
}
または、JSON値という種類のパラメーターをご利用いただくと、JSONとして表現可能な形に自動的に値をエンコードするので、パラメーターの方に「値の種類: JSON値」、「JSON値の種類: テキスト」を設定いただくのも選択肢に入ります(この場合の設定例のスクリーンショットを添付しています)。
JSON値をご利用いただく場合は、ダブルクォートの付与も自動で行うため、明示的な指定は不要となります。
JSON値ではない、通常のテキスト型をご利用いただく場合は、前述の通りとなりますが、
単純置換
となりますので、明示的なダブルクォートの記述が必要となります。こちらについては、HTTP APIアクションのドキュメント上のスクリーンショットが誤解を招く内容となっておりましたので、追って修正を行わせていただきます。
Takuya Matsuda
ベースマキナサポート担当
動作しました!
JSON値とする例はアクション実行画面でユーザーがJSON文字列を手打ちしないといけないということですよね・・。
ちょっとそればオペレーションとして現実的で無いので \\n を使うことにします。
早急な対応ありがとうございました!
本件クローズ?で大丈夫です!
ベースマキナサポート担当
JSON値の場合も、テキスト型パラメーターとほとんど使い方は変わらず、複数行入力を有効化していただくだけです。
JSON値の場合は、内容が自動的にエスケープされるので、改行文字を明示的に指定する必要はありません。また、テキスト中に入力された
"
も自動的にエスケープされます。これらの理由から、JSONテキスト内への埋め込み目的では、JSON値の方が適切となるケースが多そうです。選択肢が多く恐縮ですが、使いやすいと感じる方をご利用いただけますと幸いです。