我正在尝试使用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"
}
}
答案 0 :(得分:2)
叹息我想通了......其他帖子说这个神秘错误是由于格式错误的JSON是正确的。
在我的路线中,我传递fields
作为来自req.body.fields
的{{1}}实际上已经潜入fields
值,而不是直接通过它。这使得当JSON被发送到JIRA时,fields
外包装器丢失了。我改变了我的路线以传递req.body
而不是req.body.fields
,一切都很顺利。
...... 4个小时很有趣......