使用Jira API REST创建问题

时间:2015-04-14 11:52:13

标签: node.js sails.js jira jira-rest-api

当我尝试通过Jira API REST创建一个问题时,我得到一个500 Internal server error,我成功地从带有get-request的项目中获得了一个问题但是当我尝试使用post-request创建一个新问题不起作用我收到错误。

这是我的JavaScript代码:

createIssue: function(req, res) {
  var Http = require('machinepack-http');
  process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
  Http.sendHttpRequest({
    url: '/rest/api/2/issue/',
    baseUrl: 'https://jira.mydomain.com',
    method: 'post',
    data: {
      "fields": {
        "project": {
          "key": "TEST"
        },
        "summary": "REST ye merry gentlemen.",
        "description": "Creating of an issue using project keys and issue type names using the REST API",
        "issuetype": {
          "name": "Bug"
        }
      }
    },
    headers: {
      "Authorization": "Basic YWxbG9wMS4zp0bWFuzeThYS5l1TIqaXoxOTg5554Jh"
    },
  }).exec({
    serverError: function(result) {
      res.send("server error" + JSON.stringify(result))
    },
    success: function(result) {
      res.send("issue has been created succefly");
    },
  });
}

错误内容:

{
    "body": "{\"errorMessages\":[\"Internal server error\"],\"errors\":{}}",
    "headers": "{\"server\":\"nginx/1.6.0\",\"date\":\"Tue, 14 Apr 2015 13:45:38 GMT\",\"content-type\":\"application/json;charset=UTF-8\",\"transfer-encoding\":\"chunked\",\"connection\":\"close\",\"x-arequestid\":\"945x246734x1\",\"set-cookie\":[\"JSESSIONID=838923A79DA31F77BDD62510399065CF; Path=/; HttpOnly\",\"atlassian.xsrf.token=BQIV-TVLW-FGBG-OTYU|63c1b4a7b87a9367fff6185f0101c415f757e85b|lin; Path=/\"],\"x-seraph-loginreason\":\"OK\",\"x-asessionid\":\"ughpoh\",\"x-ausername\":\"alaa\",\"cache-control\":\"no-cache, no-store, no-transform\",\"x-content-type-options\":\"nosniff\"}",
    "status": 500
}

2 个答案:

答案 0 :(得分:4)

使用params代替data

<强> JS: -

createIssue: function(req, res) {
  var Http = require('machinepack-http');
  process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
  Http.sendHttpRequest({
    url: '/rest/api/2/issue/',
    baseUrl: 'https://jira.mydomain.com',
    method: 'post',
    params: {
      "fields": {
        "project": {
          "key": "TASC"
        },
        "summary": "REST ye merry gentlemen.",
        "description": "Creating of an issue using project keys and issue type names using the REST API",
        "issuetype": {
          "name": "Bug"
        }
      }
    },
    headers: {
      "Authorization": "Basic YWxbG9wMS4zp0bWFuzeThYS5l1TIqaXoxOTg5554Jh"
    },
  }).exec({
    serverError: function(result) {
      res.send("server error" + JSON.stringify(result))
    },
    success: function(result) {
      res.send("issue has been created succefly");
    },
  });
}

Reference

答案 1 :(得分:0)

当它试图解析projectissuetype字段时,它看起来像是期望一些非空值,虽然没有完整的堆栈跟踪,但很难确定。

您可以尝试在idproject字段中添加issuetype属性:

params: {
  "fields": {
    "project": {
      "key": "TASC",
      "id": "10001"
    },
    "summary": "REST ye merry gentlemen.",
    "description": "Creating of an issue using project keys and issue type names using the REST API",
    "issuetype": {
      "id": "1",
      "name": "Bug"
    }
  }
}

显然,您希望确保在两种情况下都使用适当的值。