0

Postman と Javascript の両方を使用して、Cloud atlassian.net アカウントで Confluence API をクエリしています。

CQLのスペースの場所で使用する+と、うまくいきます(したがって、これは承認の問題ではありません-これはうまくいきます!!):

https://mycompany.atlassian.net:443/confluence/rest/api/content/search?os_authType=basic&cql=type=page+and+space+in+(DEV,OPS)+and+title+~+deploy

ただし、スペースを使用しても次のことはできません。

https://mycompany.atlassian.net:443/confluence/rest/api/content/search?os_authType=basic&cql=type=page and space in (DEV,OPS) and title ~ deploy

エンコードされたバージョンもありません:

https://mycompany.atlassian.net:443/confluence/rest/api/content/search?os_authType=basic&cql=type=page%20and%20space%20in%20(DEV,OPS)%20and%20title%20~%20deploy

どちらも次の結果になります。

{
  "statusCode": 400,
  "data": {
    "authorized": false,
    "valid": true,
    "errors": [],
    "successful": false
  },
  "message": "Could not parse cql : type=page%20and%20space%20in(DEV,OPS)%20and%20title~deploy"
}

ドキュメントに基づいて、使用する必要があることについての言及はありませんAtlassian Answers に関する質問に+ 続く議論に基づいて、これをグリーンすることしかできませんでした。

プラスは問題ありませんが、あいまい検索を使用して複数の用語を検索する必要があるため、次のようにします。

title+~+deploy+my+app

結果は次のとおりです。

"message": "Could not parse cql : type=page%20and%20space%20in(DEV,OPS)%20and%20title~deploy my app"

と:

title+~+"deploy+my+app"

結果は次のとおりです。

"message": "Could not parse cql : type=page%20and%20space%20in(DEV,OPS)%20and%20title~%22deploy my app%22"

このクラウド アプリケーションの複数単語の文字列を検索する方法はありますか?

4

1 に答える 1

0

はい、私もこれを経験しましたが、かなり腹立たしいです。正しくエンコードされていないようです。

私の回避策は、独自の urlencode 関数を作成することでした。これを行うためのより良い方法があれば、私はそれを聞きたいです:

function urlencode() {
    local convert=$(convertFromAscii "$1")
    echo ${convert} | sed "s/'/%27/g" | sed "s/\\\/%5C/g"
}

function convertFromAscii() {
    local input=$1
    local length="${#input}"
    for (( i = 0; i < length; i++ )); do
        local c="${input:i:1}"
        case ${c} in
            [a-zA-Z0-9.~_-+\']) printf "$c" ;;
            '-') printf "-" ;;
            ' ') printf "%%20" ;;
            '!') printf "%%21" ;;
            '"') printf "%%22" ;;
            '#') printf "%%23" ;;
            '$') printf "%%24" ;;
            '%') printf "%%25" ;;
            '&') printf "%%26" ;;
            '(') printf "%%28" ;;
            ')') printf "%%29" ;;
            '*') printf "%%2A" ;;
            '+') printf "%%2B" ;;
            ',') printf "%%2C" ;;
            '<') printf "%%3C" ;;
            '=') printf "%%3D" ;;
            '>') printf "%%3E" ;;
            '?') printf "%%3F" ;;
            '[') printf "%%5B" ;;
            ']') printf "%%5D" ;;
        esac
    done
}

次のように呼び出します。

urlencode "${JIRA_FILTER_TEXT}"
于 2016-08-04T11:15:49.203 に答える