Jira API POST 和 Invoke-RestMethod
Jira API POST and Invoke-RestMethod
使用 Jira API 2 和 PowerShell 5 Invoke-RestMethod
我可以成功执行 GET,但是在尝试 POST 方法创建问题时我一直收到 (400) Bad Request
我的项目。
$user = [System.Text.Encoding]::UTF8.GetBytes("me:mypassword")
$headers = @{Authorization = "Basic " + [System.Convert]::ToBase64String($user)}
$data = Get-Content D:\scripts\powershell\issue.txt
Invoke-RestMethod -Uri "https://agile.mycompany.com/rest/api/2/issue/" -Method POST -Headers $headers -ContentType "application/json" -Body $data
$data
变量格式正确 JSON 对于 Jira:
{
"fields":
{
"project":{"Key": "ITS"},
"summary":"Rest Test 1",
"issuetype":{"name": "Task"},
"assignee":{"key": "myusername"},
"priority":{"id": "3"},
"description":
"||Host Name||IP Address||Comments||
|some-pc|192.168.1.1| |",
"duedate": "2016-09-11"
}
}
我是项目所有者,所以这不是权限问题。
Get-content 很棘手,因为它实际上会生成一个字符串数组,文本文件中的每一行都是该数组中的一个 object。解决这个问题的最佳方法可能是改用 .Net 的文件读取方法:
$data = [System.IO.File]::ReadAllText("D:\scripts\powershell\issue.txt")
顺便说一句,您可以使用常规 ps 凭据 object 而不是手动构建您的请求 header.
附带说明一下,使用 postman 等工具测试您的 api 始终是个好主意。这将让您验证您发布的内容是否有效 json 而不必担心您的代码会做奇怪的事情。
问题已解决。问题是我是 CAPITALIZING 字段名称的第一个字母。显然,Jira 对 CASE 非常敏感。 Trondh - 感谢您推荐使用 postman。邮递员从失败的 API 调用中生成的错误非常简洁。
使用 Jira API 2 和 PowerShell 5 Invoke-RestMethod
我可以成功执行 GET,但是在尝试 POST 方法创建问题时我一直收到 (400) Bad Request
我的项目。
$user = [System.Text.Encoding]::UTF8.GetBytes("me:mypassword")
$headers = @{Authorization = "Basic " + [System.Convert]::ToBase64String($user)}
$data = Get-Content D:\scripts\powershell\issue.txt
Invoke-RestMethod -Uri "https://agile.mycompany.com/rest/api/2/issue/" -Method POST -Headers $headers -ContentType "application/json" -Body $data
$data
变量格式正确 JSON 对于 Jira:
{
"fields":
{
"project":{"Key": "ITS"},
"summary":"Rest Test 1",
"issuetype":{"name": "Task"},
"assignee":{"key": "myusername"},
"priority":{"id": "3"},
"description":
"||Host Name||IP Address||Comments||
|some-pc|192.168.1.1| |",
"duedate": "2016-09-11"
}
}
我是项目所有者,所以这不是权限问题。
Get-content 很棘手,因为它实际上会生成一个字符串数组,文本文件中的每一行都是该数组中的一个 object。解决这个问题的最佳方法可能是改用 .Net 的文件读取方法:
$data = [System.IO.File]::ReadAllText("D:\scripts\powershell\issue.txt")
顺便说一句,您可以使用常规 ps 凭据 object 而不是手动构建您的请求 header.
附带说明一下,使用 postman 等工具测试您的 api 始终是个好主意。这将让您验证您发布的内容是否有效 json 而不必担心您的代码会做奇怪的事情。
问题已解决。问题是我是 CAPITALIZING 字段名称的第一个字母。显然,Jira 对 CASE 非常敏感。 Trondh - 感谢您推荐使用 postman。邮递员从失败的 API 调用中生成的错误非常简洁。