2016-08-02 53 views
0

Ich benutze sowohl Postman als auch Javascript, um die Confluence API auf einem Cloud atlassian.net-Konto abzufragen.Confluence REST API Search - Fehler beim Codieren der CQL-Abfrage beim Codieren

Wenn ich + an Orten der Räume für CQL es funktioniert für mich (so ist dies nicht eine Frage der Zulassung ausarbeitet - das funktioniert !!):

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

jedoch die Verwendung von Leerzeichen nicht :

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

auch nicht die codierte Version:

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 

Sie beide res ult in:

{ 
    "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" 
} 

Basierend auf der documentation Ich sehe nicht erwähnt, um die + Ich war nur in der Lage zu verwenden, um dies auf die Diskussion basiert auf gleen einer question on Atlassian Answers folgen.

Die Pluspunkte sind in Ordnung, aber ich brauche die Fuzzy-Suche verwenden, um mehrere Begriffe so Dinge wie zu suchen:

title+~+deploy+my+app 

bewirkt:

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

und:

title+~+"deploy+my+app" 

Ergebnis:

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

Gibt es eine Möglichkeit, eine Zeichenfolge mit mehreren Wörtern für diese Cloud-Anwendung zu suchen?

+0

Haben Sie versucht, mit AND oder OR in Ihrer Anfrage? 'title + ~ +" deploy ODER meine OR app "' – ppasler

+0

@ppasier danke, guter Gedanke. Gleiches Ergebnis, da die Anführungszeichen und Leerzeichen codiert werden müssen. –

Antwort

0

Ja, ich habe das auch erlebt und es ist ziemlich ärgerlich. Es scheint nicht richtig zu kodieren.

Meine Problemumgehung war meine eigene urlencode Funktion zu schreiben. Wenn es ein besserer Weg, dies zu tun ist, würde ich gerne hören:

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 
} 

nennt es wie folgt aus:

urlencode "${JIRA_FILTER_TEXT}"