如何发布到网址? (使用JIRA api创建问题)

时间:2016-01-13 21:11:41

标签: api rest post jira

我在how to create an issue in jira via rest api?

中找到了这个答案
  

发布到此网址

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。

我相信其中描述了如何通过发布到网址来创建问题。

问题是,我不知道这是如何实际实现的。

如何对网址进行POST?

这与PHP帖子相同吗?

数据保存在哪里?

这是用什么语言编写的?

对于这样一个模糊的问题感到抱歉,这对我来说是全新的,我甚至不知道从哪里开始研究这个&gt; _&lt;任何具体的例子都会非常有用!

谢谢!

1 个答案:

答案 0 :(得分:0)

数据部分以JSON格式编写,它只是数据结构的文本表示。它具有可读性,但实际上可以显示为:

{“fields”:{“project”:{“key”:“”},“summary”:“REST EXAMPLE”,“description”:“通过REST API创建问题”,“issuetype”:{“名称“:”Bug“}}}

要POST到URL并创建问题,您需要一个服务器端机制来首先验证aginst Jira,然后使用HTTP POST发送数据。 在PHP中,您可以使用cURL来POST或GET,或者将file_get_contents()用于GET。 PHP cURL doc在这里: http://php.net/manual/en/book.curl.php

例如,这是一个用于创建Jira问题的PHP函数(在身份验证之后):

public function createIssue(){
    /*
    Issue types:
        1:  Bug
        3:  Task
        5:  Sub-task
    */
    $out = false;
    $this->method = "POST";
    $this->url = "http://10.50.25.64:8080/rest/api/2/issue/";
    $this->data = array(
    "fields" => array(
        "project" => array("key" => $this->projectKey),
        "summary" => $this->summary,
        "environment" => $this->environment,
        "description" => $this->description,
        "issuetype" => array("id" => $this->issueType),
        )
    );
    if (!empty($this->assignee)) $this->data['fields']['assignee'] = $this->assignee;
    if (!empty($this->labels)) $this->data['fields']['labels'] = $this->labels;
    foreach($this->customFields as $key => $val){
        $this->data['fields'][$key] = $val;
    }
    $issue = $this->execCURL();
    return $issue;
}

函数execCURL()接受PHP数组($ this-&gt; data)并使用PHP cURL发送它。

希望这有任何帮助!