POST后的JIRA API返回{errorMessages:['内部服务器错误'],错误:{}}

时间:2017-03-03 04:06:44

标签: jira jira-rest-api

我正在尝试使用JIRA REST API创建一个新问题,每当我尝试时,我都会收到以下一般错误: { errorMessages: [ 'Internal server error' ], errors: {} }

我可以从API成功获取,并且我正在连接的凭据具有对JIRA的完全管理员访问权限(因此它不是Auth问题),但每次使用POST都会出现此错误。下面是我发送的JSON数据的片段。我错过了什么明显的东西吗?

以下是我的JavaScript代码。注意我正在使用来自npm的jira-connector。 (此示例代码使用mydomain替​​换了真实域名)

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);
        }
    });
})
}

以下是在上面的JS中传递给fields的JSON。注意customfield_17300是一个单选按钮,customfield_17300是一个多选框。对于这两种情况,我都尝试使用“id”以及实际的字符串“name”值。以下所有ID均直接来自相同问题的API GET:

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

1 个答案:

答案 0 :(得分:2)

叹息我想通了......其他帖子说这个神秘错误是由于格式错误的JSON是正确的。

在我的路线中,我传递fields作为来自req.body.fields的{​​{1}}实际上已经潜入fields值,而不是直接通过它。这使得当JSON被发送到JIRA时,fields外包装器丢失了。我改变了我的路线以传递req.body而不是req.body.fields,一切都很顺利。

...... 4个小时很有趣......