2011-05-04 147 views

回答

26

POST到这个网址

https://<JIRA_HOST>/rest/api/2/issue/ 

此数据:

{ 
"fields": { 
    "project": 
    { 
     "key": "<PROJECT_KEY>" 
    }, 
    "summary": "REST EXAMPLE", 
    "description": "Creating an issue via REST API", 
    "issuetype": { 
     "name": "Bug" 
    } 
    } 
} 

在收到的答案将是ID和您的问题的关键:

{"id":"83336","key":"PROJECT_KEY-4","self":"https://<JIRA_HOST>/rest/api/2/issue/83336"} 

不要忘记授权。我使用了HTTP-Basic。

+0

你能告诉我更多关于你提到的授权吗?是否需要通过项目所有者的用户名和密码?或者REST只接受URL,Header(json)和Data? – Tru 2013-04-05 12:44:58

+0

我实际上收到一个错误,提示“400 Bad Request ... field:summary can not be set” – Tru 2013-04-05 12:46:44

+0

@Tru yes。 HTTP-Basic自动化是[自动化类型](http://en.wikipedia.org/wiki/Basic_access_authentication)。 AFAIK还有另一种可能的自动化选项。从[manual](http://docs.atlassian.com/jira/REST/latest/):优先认证方法是HTTP Basic(使用SSL时)和OAuth,它们都记录在JIRA REST API教程中。其他支持的方法包括:HTTP Cookie,可信应用程序和os_username/os_password查询参数。' – msangel 2013-04-05 15:17:11

6

从最新发布的版本(4.3.3)开始,不可能使用REST API。您可以使用JIRA SOAP API远程创建问题。

有关示例Java客户端,请参阅this page

+0

由于某种原因(缺乏标准符合性),soap api意味着对轴的依赖性,具体而言。我不能在我的应用程序中介绍这一点。我很确定有一种方法(可能:写一个jira插件,如果我没有更好的解决方案,我会这样做)。 – ymajoros 2011-05-05 07:04:52

9

JIRA 5.0中的REST API包含创建任务和子任务的方法。 (在撰写本文时,5.0尚未发布,尽管您可以从EAP页面访问5.0-m4。5.0-m4中的创建问题的doco为here)。

2

现在您可以使用REST + JSON来创建问题。

要检查JSON字段,你可以设置而产生的问题,使用: https://jira.host.com/rest/api/2/issue/createmeta

欲了解更多信息,请参见JIRA其余文档: https://docs.atlassian.com/jira/REST/6.2.4/

+0

对于任何想知道的人来说,使用REST API执行多于读取数据的功能是JIRA 5.x的一部分。自那时起,REST API没有发生太大的变化。 – mdoar 2014-05-08 17:28:51

1

要发送与REST API我们需要的问题数据构造包含问题详细信息的有效JSON字符串。

JSON字符串的一个基本的例子:

{“fields” : { “project” : { “key” : “@[email protected]” } , “issuetype” : { “name” : “@[email protected]” } } } 

现在,建立连接到JIRA并检查用户身份验证。 验证一旦建立,我们通过XMLHTTP方法POST REST API + JSON字符串。 处理响应和亲密用户有关响应成功或失败的信息。

所以这里JiraService是一个XMLHTTP对象,像这样的事情会增加一个问题,其中EncodeBase64是一个返回加密字符串的函数。

Public Function addJIRAIssue() as String 
With JiraService 
    .Open "POST", <YOUR_JIRA_URL> & "/rest/api/2/issue/", False 
    .setRequestHeader "Content-Type", "application/json" 
    .setRequestHeader "Accept", "application/json" 
    .setRequestHeader "Authorization", "Basic " & EncodeBase64 
    .send YOUR_JSON_STRING 

    If .Status <> 401 Then 
     addJIRAIssue = .responseText 
    Else 
     addJIRAIssue = "Error: Invalid Credentials!" 
    End If 

End With 

Set JiraService = Nothing 
End Sub 

您可以检查出complete VBA example here

+0

谢谢,但我2年前接受了一个答案,我会坚持下去。我对API文档感兴趣,并不是真的在一个VB示例中(即我唯一感兴趣的是这里的YOUR_JSON_STRING)。 – ymajoros 2014-09-03 10:53:33

+1

当然,没有问题。只是想发布答案,以便当有人使用VBA和JIRA需求来到这个链接时,他们可能会觉得这很有用。我同意你的看法,接受的答案是完美的。 – cyboashu 2014-09-03 13:09:00

3

**把这个代码(C#)**

 string postUrl = "https://netstarter.jira.com/rest/api/latest/issue"; 

     var httpWebRequest = (HttpWebRequest)WebRequest.Create(postUrl); 
     httpWebRequest.ContentType = "application/json"; 
     httpWebRequest.Method = "POST"; 
     httpWebRequest.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes("JIRAMMS:JIRAMMS")); 

     using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
     { 
      string json = @"{""fields"":{""project"":{""key"": ""JAPI""},""summary"": ""REST EXAMPLE"",""description"": ""Creating an issue via REST API 2"",""issuetype"": {""name"": ""Bug""}}}"; 

      streamWriter.Write(json); 
      streamWriter.Flush(); 
      streamWriter.Close(); 

      var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
      using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
      { 
       var result = streamReader.ReadToEnd(); 
      } 




     } 
3

要使用卷曲回答这个问题更直接,即。

要使用卷曲访问JIRA的REST API创建的情况下,使用

curl -D- -u <username>:<password> -X POST --data-binary "@<filename>" -H "Content-Type: application/json" http://<jira-host>/rest/api/2/issue/ 

并把它保存在您的<文件名>(请编辑根据您的吉拉情况下,场),并节省您拨打的文件夹中上面的cURL命令。

{ 
    "fields": { 
     "project": 
     { 
      "key": "<PROJECT_KEY>" 
     }, 
     "summary": "REST EXAMPLE", 
     "description": "Creating an issue via REST API", 
     "issuetype": { 
      "name": "Bug" 
     } 
    } 
} 

这应该起作用。 (注意有时如果它错误,可能你的文件名中的内容不正确)。

相关问题