JIRA API 在 POST returns { errorMessages: [ 'Internal server error' ], errors: {} }

JIRA API after POST returns { errorMessages: [ 'Internal server error' ], errors: {} }

我正在尝试使用 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是多select框。对于这两种情况,我都尝试使用 "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"
}
}

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

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

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