2017-03-03 2 views
0

Ich versuche, ein neues Problem mit der JIRA-REST-API zu erstellen, und immer wenn ich es versuche, bekomme ich den folgenden generischen Fehler zurück: { errorMessages: [ 'Internal server error' ], errors: {} }JIRA-API nach POST gibt zurück {errorMessages: ['Interner Serverfehler'], Fehler: {}}

ich kann erfolgreich von der API GET, und die Anmeldeinformationen mit ich verbinde haben vollen Zugriff auf Admin JIRA (so ist es kein Problem Auth), aber ich bekomme diese Fehlermeldung jedes Mal mit POST. Unten ist ein Ausschnitt der JSON-Daten, die ich sende. Fehle ich etwas Offensichtliches?

Unten ist mein JavaScript-Code. Hinweis: Ich verwende jira-connector von npm. (Real-Domäne mit Mydomain für diesen Beispielcode ersetzt) ​​

const JiraClient = require('jira-connector'); 

const dotenv = require('dotenv').config(); 

function createNewIssue(fields) { 
const encoded = process.env.JIRA_ENCODED_PW; 

const jira = new JiraClient({ 
    host: 'mydomain.atlassian.net', 
    basic_auth: { 
     base64: encoded 
    } 
}); 

return new Promise((resolve, reject) => { 
    jira.issue.createIssue(fields, (error, issue) => { 
     if (error) { 
      console.log(error); 
      reject(error); 
     } else { 
      console.log(issue); 
      resolve(encoded); 
     } 
    }); 
}) 
} 

Unten ist die JSON, die oben in fields im JS übergeben werden werden. Hinweis customfield_17300 ist ein Optionsfeld und customfield_17300 ist eine Mehrfachauswahlbox. In beiden Fällen habe ich versucht, die "ID" und den tatsächlichen String "name" -Wert zu verwenden. All IDs unten wurden gerade von einem API GET von der gleichen Ausgabe in Frage getroffen:

{ 
"fields": { 
    "project": { 
     "id": "13400" 
    }, 
    "summary": "TEST API TICKET - 01", 

    "issuetype": { 
    "id": "11701" 
}, 

    "customfield_14804": { "id": "13716" }, 

    "customfield_14607": "Hardware", 

    "customfield_17300": [ 
    { 
    "id": "18322" 
    } 
] , 

    "customfield_16301": "Customer PO", 

    "customfield_14800": "LA, California", 

    "customfield_16302": "FEDEX 234982347g" 
} 
} 

Antwort

1

Seufzer ich es herausgefunden ... andere Beiträge, die besagten, der kryptische Fehler zu einem fehlerhaften JSON zurückzuführen waren korrekt.

In meiner Route passierte ich fields als von req.body.fields kommend, die tatsächlich in die fields Werte tauchte, anstatt es gerade durch zu gehen. Dies machte es so, dass, als der JSON an JIRA gesendet wurde, der fields äußere Wrapper fehlte. Ich änderte meine Route req.body statt req.body.fields und alles war gut.

... das war ein Spaß 4 Stunden ...

+0

hinzuzufügen, hatte ich verschiedene Probleme mit Worklogs, aber keine Kommentare. Ich erinnere mich, dass ich den Datestil unserer Benutzeroberfläche von "22/Nov/17 02:54 PM" ausprobieren wollte, aber das hat nicht funktioniert und musste auf ihr ISO-8601-Format zurückgreifen, das von meinem GNU-Datendienstprogramm übernommen wurde . Ich musste den Doppelpunkt aus der TZ entfernen und sicherstellen, dass Nanosekunden vorhanden waren. Ich entfernte auch Zitate aus der Umgebung des 'timeSpentSeconds'-Wertes. – Pysis