Добавьте несколько наблюдателей к проблеме JIRA через 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',
);

Но это приводит к ошибке запроса.

2

Решение

Таким образом, единственный способ обойти это — просто сделать несколько вызовов 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);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]