Powershell 中的 Jira Rest Api
Jira Rest Api in Powershell
你能帮帮我吗?
我正在尝试使用 Powershell Invoke-WebRequest cmdlet 在 Jira 中创建问题。我收到 400 Bad Request 错误。
我能够使用 Postman 发送成功的请求,所以我确保正文语法正确并且我有足够的权限。
我的代码:
$body = @{
"fields" = @{
"project"=
@{
"key"= "ProjectKey"
}
"summary"= "Test"
"description"= "Test"
"issuetype" =@{
"id"= "10705"
}
"priority"= @{
"id"= "18"
}
"reporter"= @{"name"= "MyName"}
}
}
$Headers = @{
Authorization = "Basic QWxla0Zblablablablablablabla" #I took it from Postman
}
$restapiuri = "https://jira.domain.com/rest/api/2/issue"
Invoke-RestMethod -Uri $restapiuri -ContentType "application/json" -Body $body -Method POST -Headers $Headers
比如我可以成功执行
Invoke-RestMethod "https://jira.domain.com/rest/api/2/issue/createmeta" -Headers $Headers
我已经花了很多时间解决这个问题,但仍然无法创建问题。
任何帮助,请
对于 Jira SERVER 的基本身份验证,需要在 Base64 编码的 header 中提供凭据,您需要在通过 Powershell Invoke-WebRequest 方法提供它之前执行此操作。操作方法如下:
$username = "The username here"
$password = "The password or token here"
# Convert the username + password into a Base64 encoded hash for basic authentication
$pair = "${username}:${password}"
$bytes = [System.Text.Encoding]::ASCII.GetBytes($pair)
$base64 = [System.Convert]::ToBase64String($bytes)
$headers = @{ Authorization = "Basic $base64" }
接下来,在 PowerShell 中,如果您将请求的 body 构建为 table,就像您展示的那样,不需要包装 table 带引号的元素,请保持原样,但您需要在提交前将 table 转换为 JSON 格式,例如:
$body = @{
fields = @{
project = @{
key = "ProjectKey"
}
issuetype = @{
id = "10705" # Or refer to the Issue type by its name eg. name = "Story"
}
summary = "Test"
}
}
# Convert the body to JSON format
$body = $body | ConvertTo-Json -Depth 50
我假设您的 $Uri 字符串包含 Jira 服务器的实际 URL,而不是示例 'jira.domain.com'
从 body 中的一个简单请求开始,就像我展示的那样,它只包含创建问题所需的最少内容,它将在发出更多请求之前检查您的基本代码是否正常工作复杂。
你能帮帮我吗?
我正在尝试使用 Powershell Invoke-WebRequest cmdlet 在 Jira 中创建问题。我收到 400 Bad Request 错误。
我能够使用 Postman 发送成功的请求,所以我确保正文语法正确并且我有足够的权限。
我的代码:
$body = @{
"fields" = @{
"project"=
@{
"key"= "ProjectKey"
}
"summary"= "Test"
"description"= "Test"
"issuetype" =@{
"id"= "10705"
}
"priority"= @{
"id"= "18"
}
"reporter"= @{"name"= "MyName"}
}
}
$Headers = @{
Authorization = "Basic QWxla0Zblablablablablablabla" #I took it from Postman
}
$restapiuri = "https://jira.domain.com/rest/api/2/issue"
Invoke-RestMethod -Uri $restapiuri -ContentType "application/json" -Body $body -Method POST -Headers $Headers
比如我可以成功执行
Invoke-RestMethod "https://jira.domain.com/rest/api/2/issue/createmeta" -Headers $Headers
我已经花了很多时间解决这个问题,但仍然无法创建问题。
任何帮助,请
对于 Jira SERVER 的基本身份验证,需要在 Base64 编码的 header 中提供凭据,您需要在通过 Powershell Invoke-WebRequest 方法提供它之前执行此操作。操作方法如下:
$username = "The username here"
$password = "The password or token here"
# Convert the username + password into a Base64 encoded hash for basic authentication
$pair = "${username}:${password}"
$bytes = [System.Text.Encoding]::ASCII.GetBytes($pair)
$base64 = [System.Convert]::ToBase64String($bytes)
$headers = @{ Authorization = "Basic $base64" }
接下来,在 PowerShell 中,如果您将请求的 body 构建为 table,就像您展示的那样,不需要包装 table 带引号的元素,请保持原样,但您需要在提交前将 table 转换为 JSON 格式,例如:
$body = @{
fields = @{
project = @{
key = "ProjectKey"
}
issuetype = @{
id = "10705" # Or refer to the Issue type by its name eg. name = "Story"
}
summary = "Test"
}
}
# Convert the body to JSON format
$body = $body | ConvertTo-Json -Depth 50
我假设您的 $Uri 字符串包含 Jira 服务器的实际 URL,而不是示例 'jira.domain.com'
从 body 中的一个简单请求开始,就像我展示的那样,它只包含创建问题所需的最少内容,它将在发出更多请求之前检查您的基本代码是否正常工作复杂。