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 中的一个简单请求开始,就像我展示的那样,它只包含创建问题所需的最少内容,它将在发出更多请求之前检查您的基本代码是否正常工作复杂。