Estou enviando uma solicitação POST usando o Powershell Invoke-WebRequest para o /git/updateFromGit
ponto de extremidade da API Fabric Rest.
Anteriormente, recuperei com sucesso o Head do espaço de trabalho e a chamada remota do Git Hash, /git/GetStatus
conforme descrito aqui .
Meu token é válido e verifiquei que tem os escopos corretos.
Não consigo enviar uma solicitação bem-sucedida para atualizar o espaço de trabalho do git, sempre tendo problemas com o corpo da solicitação: ou ele diz que estão faltando algumas propriedades ou que o hash do git não é válido.
Esta é a parte do código que cria as solicitações e as envia:
$headers = @{ 'Authorization' = "Bearer $token"}
$urlUpdate = 'https://api.fabric.microsoft.com/v1/workspaces/{0}/git/updateFromGit' -f $workspaceId
$postParams = [ordered]@{
workspaceHead = $GitWorkspaceHead
remoteCommitHash = $GitRemoteCommitHash
options = @{allowOverrideItems = $true }
}
Write-Host "Request body:"
$postParams | Format-Table
$ResponseUpdate = Invoke-WebRequest -Method Post -Uri $urlUpdate -Headers $headers -Body $postParams
Neste caso, envio $postParams
como uma tabela Hash. A mensagem de erro que recebo é a seguinte:
Em uma segunda tentativa, envio $postParams
como um objeto JSON, e neste caso ele diz que o hash do git não é válido , mas o hash do git está correto e válido após verificação.
Como você pode ver, o formato JSON é idêntico ao descrito nos exemplos da documentação ( conflictResolution
não é obrigatório).
$headers = @{ 'Authorization' = "Bearer $token"}
$urlUpdate = 'https://api.fabric.microsoft.com/v1/workspaces/{0}/git/updateFromGit' -f $workspaceId
$postParams = [ordered]@{
workspaceHead = $GitWorkspaceHead
remoteCommitHash = $GitRemoteCommitHash
options = @{allowOverrideItems = $true }
} | ConvertTo-Json
Write-Host "Request body:"
$postParams | Format-Table
$ResponseUpdate = Invoke-WebRequest -Method Post -Uri $urlUpdate -Headers $headers -Body $postParams
O que estou fazendo errado?
Adicionar o parâmetro
-ContentType application/json
usando Invoke-RestMethod permitiu que a solicitação fosse processada corretamente quando o corpo foi analisado como JSON.