gpt4 book ai didi

json - HttpRequestData 将正文包装在 { "json": "" }

转载 作者:行者123 更新时间:2023-12-02 23:06:08 25 4
gpt4 key购买 nike

我正在尝试设置一个 .NET 5 Azure Http 函数,该函数接受带有 json 正文的请求并将其输出到日志。

using System.Threading.Tasks;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Pipeline;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;

namespace MyProject.Test
{
public sealed class Function
{
[FunctionName("Test")]
public async Task RunAsync(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)]
HttpRequestData requestData,
FunctionExecutionContext executionContext)
{
executionContext.Logger.LogInformation(requestData.Body);
}
}
}

我使用 Postman 发布 json 正文

{
"myProperty": "abc123"
}

哪些输出

{ "json": "{\"myProperty\":\"abc123\"}" }

我不确定为什么该函数将主体包装在 { "json": ""} 中。

我的功能设置不正确吗?或者它设置是否正确并且我可以通过另一种方式访问​​原始主体?

最佳答案

事实证明,我遵循了过时的指南来设置 .NET 5 Http 函数。微软官方指南有效。 https://learn.microsoft.com/en-gb/azure/azure-functions/dotnet-isolated-process-guide

这需要将其中一些包添加到 .csproj

    <ItemGroup>
<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.0.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http" Version="3.0.12" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.0.1" OutputItemType="Analyzer" />
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="5.0.0" />
<PackageReference Include="System.Net.NameResolution" Version="4.3.0" />
<PackageReference Include="System.Text.Json" Version="5.0.1" />
</ItemGroup>

函数现在看起来像这样

using System.Text.Json.Serialization;
using System.Threading.Tasks;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;

namespace MyProject.Test
{
public sealed class Function
{
[Function("Test")]
public async Task<HttpResponseData> Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)]
HttpRequestData requestData,
FunctionContext context)
{
var myclass = await System.Text.Json.JsonSerializer.DeserializeAsync<MyClass>(requestData.Body);

context.GetLogger("Test").LogInformation(myclass.MyProperty);

var response = requestData.CreateResponse(System.Net.HttpStatusCode.OK);
return response;
}

public class MyClass
{
[JsonPropertyName("myProperty")]
public string MyProperty { get; set; }
}
}
}

json 主体现在可以正确序列化。

关于json - HttpRequestData 将正文包装在 { "json": "" },我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66911660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com