URL + 文字の代わりに %20 を使用して Jira スマート値をエンコードします
プラットフォームの注記: Cloud のみ - この記事は、 クラウド プラットフォーム上のアトラシアン製品にのみ適用されます。
要約
urlEncode Jira スマート値関数を使用すると、スペース (" ") が %20 ではなくプラス記号 (+) に置き換えられます。この記事では、期待されるエンコードを使用するためにこの動作を変更する方法のガイダンスを提供します。
診断
文字列の URL エンコード時に + と %20 はどちらもスペースを表すことができますが、URI パス内のエンコードされた文字列の位置によっては URL が壊れ、HTTP 4xx エラーが発生する場合があります。このエンコードによって URL が壊れてエラーが発生するシナリオの例としては、Opsgenie API Get on calls エンドポイントがあります。スマート値を介してアクセスするカスタム フィールドを介してスケジュール識別子を設定した場合、 + はエンコードされた空白スペースではなく、文字自体として扱われます。
1
https://api.opsgenie.com/v2/schedules/{{issue.customfield_12345.Name.urlEncode}}_schedule/on-calls?scheduleIdentifierType=name
カスタム フィールド値が「Support Desk」の場合、スマート値は次のようにレンダリングされます。
1
https://api.opsgenie.com/v2/schedules/Support+Desk_schedule/on-calls?scheduleIdentifierType=name
上記では、URL に %20 ではなく + 文字が含まれているため、HTTP 404 エラーが返されます。
原因
これは、この方法で空白をエンコードする Java の URLEncoder クラスを使用するスマート値関数によって発生します。URL エンコード スマート値に使用される別の Java クラスによってデフォルトの動作を変更する旨の要望が起票されています。
AUTO-1107 - urlEncode Jira スマート値関数で Java URLEncode クラスではなく Java URI クラスを使用する
ソリューション
replace() 関数または replaceAll() 関数を使用して、+ 文字を期待される %20 エンコーディングに置き換えることができます。
replace()
1
{{issue.customfield_12345.Name.urlEncode.replace("+","%20")}}
または
replaceAll()
1
{{issue.customfield_12345.Name.urlEncode.replaceAll("\+","%20")}}
この内容はお役に立ちましたか?