HttpRequestData将正文包装在{“json”:“json”中
我正在尝试设置一个.NET 5 Azure Http函数,该函数接受带有json正文的请求并将其输出到日志中HttpRequestData将正文包装在{“json”:“json”中,json,azure,azure-functions,.net-5,Json,Azure,Azure Functions,.net 5,我正在尝试设置一个.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 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函数。微软官方指南有效 这需要将其中一些包添加到
.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; }
}
}
}
使用System.Text.Json.Serialization;
使用System.Threading.Tasks;
使用Microsoft.Azure.Functions.Worker;
使用Microsoft.Azure.Functions.Worker.Http;
使用Microsoft.Extensions.Logging;
名称空间MyProject.Test
{
公共密封类函数
{
[功能(“测试”)]
公共异步任务运行(
[HttpTrigger(AuthorizationLevel.Function,“post”,Route=null)]
HttpRequestData请求数据,
函数(上下文)
{
var myclass=await System.Text.Json.JsonSerializer.DeserializeAsync(requestData.Body);
context.GetLogger(“Test”).LogInformation(myclass.MyProperty);
var response=requestData.CreateResponse(System.Net.HttpStatusCode.OK);
返回响应;
}
公共类MyClass
{
[JsonPropertyName(“myProperty”)]
公共字符串MyProperty{get;set;}
}
}
}
json主体现在被正确序列化