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 个小时很有趣...
我正在尝试使用 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 个小时很有趣...