JSON 美化器使用 Azure 函数和/PowerShell 和 HTTP 触发器
Posted
技术标签:
【中文标题】JSON 美化器使用 Azure 函数和/PowerShell 和 HTTP 触发器【英文标题】:JSON Prettifier Using Azure Function w/ PowerShell and HTTP Trigger 【发布时间】:2020-01-09 13:55:35 【问题描述】:以为这会很简单,但可惜我想不通。 It appears that PowerShell will prettify JSON with a single cmdlet.
目标:使用 PowerShell Azure Function 应用美化 JSON
使用 Microsoft Flow,将 HTTP 请求 (POST) 发送到正文中带有“丑陋”的序列化 JSON 文件的 Azure 函数 Azure Function 读取文件(然后使用ConvertToJson
cmdlet 美化?)并将文件输出回Flow
问题:
-
我应该在 Azure Function 的
run.ps1
区域中添加什么来实现这一点?
我应该在 Azure 函数的 functions.json
区域中添加什么来实现这一点?
【问题讨论】:
GET 方法将丢弃请求的主体,从而排除 Get。您可以使用 Post 或 PUT,两者都用于将正文内容发送到 Web 服务器。传统上 PUT 和 PATCH 用于更新语句,而 POST 可用于更新或创建。 谢谢;我将使用 POST。有什么 PowerShell 语法建议可以真正解决这个问题吗? 【参考方案1】:下面我已经序列化字符串了
' "baz": "quuz", "cow": [ "moo", "cud" ], "foo": "bar" '
Prettify json in powershell 3中提到过
这是我与 HttpPost 一起使用并发送请求的函数:
using namespace System.Net
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."
# Interact with query parameters or the body of the request.
$name = $Request.Query.baz
if (-not $name)
$name = $Request.Body.baz
if ($name)
$status = [HttpStatusCode]::OK
$body = "Hello $name"
else
$status = [HttpStatusCode]::BadRequest
$body = "Please pass a name on the query string or in the request body."
# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@
StatusCode = $status
Body = $body
)
您可以在下面看到,我可以从我发布的字符串中读取它。
您可以使用 ConvertFrom-Json
进行转换,但我想知道您是否需要它,因为您可以通过以下操作访问它:
$name = $Request.Query.baz
我的绑定和你的一样。希望对您有所帮助。
如果您还需要任何帮助,请告诉我。
【讨论】:
请注意,在 OP 中,我将序列化 JSON 文件发布到 Azure 函数而不是字符串。理想情况下,我希望得到一个美化的 JSON 文件作为响应中的输出。这如何改变 PowerShell 代码? 对我来说仍然没有运气。状态 400 错误请求:“请在查询字符串或请求正文中传递名称。”同样,我正在向函数发送 FILE 而不是 JSON 字符串。还有什么想法吗?【参考方案2】:你在寻找这样的东西吗?
using namespace System.Net
param($Request, $TriggerMetadata)
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@
StatusCode = [HttpStatusCode]::OK
Body = $Request.RawBody | ConvertFrom-Json | ConvertTo-Json
)
【讨论】:
以上是关于JSON 美化器使用 Azure 函数和/PowerShell 和 HTTP 触发器的主要内容,如果未能解决你的问题,请参考以下文章
发布 azure 函数并使用 appsettings.json
Microsoft Azure 存储资源管理器 - 如何查询包含 JSON 字符串的列