0

我在 GitHub Action 中有这一行:

curl https://api.github.com/repos/JJ/raku-advent-calendar-article-2019/issues/$ENV:ISSUE/comments -H "Authorization: token $ENV:TOKEN"  -H "Content-Type: application/json" --data $output

我还没有找到一种方法来分配值以$data使其工作。GitHub Actions 或 Powershell 或两者兼而有之,通常在引用时将其删除,但我真的不知道它的作用和位置。

这是我最后一次尝试:

'{ `"body`": `"Merry Xmas to you too!`"}'

请注意双引号的 Powershell 转义。这返回了这个错误:

curl: (6) Could not resolve host: Xmas

所以,出于某种原因,它停在了梅里。任何的想法?

这个问题很相似,但是,他们没有使用变量来保存我需要的结果。

4

2 回答 2

4

如果您使用的是 PowerShell,请使用本机 PowerShell 函数,例如Invoke-RestMethod,它接受 PowerShell 数据结构,而不用担心序列化/反序列化。

Invoke-RestMethod -Uri $Uri -Headers @{Authorization = "token $env:TOKEN"; "Content-Type" = "application/json"} -Body @{body = "Merry Xmas to you too!"}
于 2019-12-04T17:32:19.547 回答
2
  • '...'是PowerShell 中的逐字字符串,因此嵌入"不需要转义 - 你的`字符。被视为文字

  • 然而,遗憾的是,PowerShell"在调用外部程序(例如)时对嵌入式的处理curl从根本上被破坏了,需要您对\它们进行 -escape:

$jsonForCurl = '{ \"body\": \"Merry Xmas to you too!\" }'

要将此转义应用于现有字符串值,请使用以下命令:

$json = '{ "body": "Merry Xmas to you too!" }'
$jsonForCurl = $json -replace '"', '\"'

有关如何将此技术应用于可扩展字符串 ( )的信息,请参阅此答案。"..."

这个长期存在的问题,如果不破坏现有代码就无法解决,在这个 GitHub 问题这个 GitHub 文档问题中进行了讨论。

于 2019-12-04T18:12:33.553 回答