通过 REST 添加多个观察者到 JIRA Issue API
Add Multiple Watchers to JIRA Issue via REST API
使用 PHP 和 JIRA REST API,我可以通过以下代码向现有问题添加观察者:
$username = 'xxxx';
$password = 'xxxx';
$proxy = 'http://xxxx:8080/';
$url = "http://xxxx/rest/api/2/issue/xxxx/watchers";
$data = 'name1';
$ch = curl_init();
$headers = array(
'Accept: application/json',
'Content-Type: application/json'
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
$result = curl_exec($ch);
$ch_error = curl_error($ch);
if ($ch_error) {
echo "cURL Error: $ch_error";
} else {
echo $result;
}
curl_close($ch);
但是,这个方法只允许我添加一个观察者。有没有办法为现有问题添加多个观察者?我试过这样做:
$data = array(
'name1',
'name2',
);
但这会导致错误请求错误。
所以我能解决这个问题的唯一方法就是多次调用 API 来添加观察者。出于某种原因,API 不接受具有多个名称的正确格式的 JSON 调用。如果只有一个名字,JSON 输出只是 "name1"
,但是对于数组中的多个名字,它变成 ["name1","name2","name3"]
(方括号显然是把它扔掉的原因)。
如果有人知道更好的方法,请告诉我,但这就是我最终所做的(不过我真的认为这是一个解决方法,而不是一个答案):
$username = 'xxxx';
$password = 'xxxx';
$proxy = 'http://xxxx:8080/';
$url = "http://xxxx/rest/api/2/issue/xxxx/watchers";
$data = array(
'name1',
'name2',
'name3'
);
$headers = array(
'Accept: application/json',
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
foreach ($data as $key => $user)
{
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($user));
$result = curl_exec($ch);
}
curl_close($ch);
使用 PHP 和 JIRA REST API,我可以通过以下代码向现有问题添加观察者:
$username = 'xxxx';
$password = 'xxxx';
$proxy = 'http://xxxx:8080/';
$url = "http://xxxx/rest/api/2/issue/xxxx/watchers";
$data = 'name1';
$ch = curl_init();
$headers = array(
'Accept: application/json',
'Content-Type: application/json'
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
$result = curl_exec($ch);
$ch_error = curl_error($ch);
if ($ch_error) {
echo "cURL Error: $ch_error";
} else {
echo $result;
}
curl_close($ch);
但是,这个方法只允许我添加一个观察者。有没有办法为现有问题添加多个观察者?我试过这样做:
$data = array(
'name1',
'name2',
);
但这会导致错误请求错误。
所以我能解决这个问题的唯一方法就是多次调用 API 来添加观察者。出于某种原因,API 不接受具有多个名称的正确格式的 JSON 调用。如果只有一个名字,JSON 输出只是 "name1"
,但是对于数组中的多个名字,它变成 ["name1","name2","name3"]
(方括号显然是把它扔掉的原因)。
如果有人知道更好的方法,请告诉我,但这就是我最终所做的(不过我真的认为这是一个解决方法,而不是一个答案):
$username = 'xxxx';
$password = 'xxxx';
$proxy = 'http://xxxx:8080/';
$url = "http://xxxx/rest/api/2/issue/xxxx/watchers";
$data = array(
'name1',
'name2',
'name3'
);
$headers = array(
'Accept: application/json',
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
foreach ($data as $key => $user)
{
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($user));
$result = curl_exec($ch);
}
curl_close($ch);