【问题标题】:How do I return JSON only from Azure Functions (dotnet5)如何仅从 Azure Functions (dotnet5) 返回 JSON
【发布时间】:2021-08-15 06:23:02
【问题描述】:

我在 dotnet5 中有一组 HttpTrigger Azure 函数,我想从这些 Azure 函数返回 JSON。我正在使用return new OkObjectResult(myObject),但这不是提供 JSON,而是 JSON 在返回的 JSON 的“值”元素中 即结果看起来有点像

{
  "Value": {
    "MyValueOne": true,
    "MyValueTwo": 8
  },
  "Formatters": [],
  "ContentTypes": [],
  "DeclaredType": null,
  "StatusCode": 200
}

与预期相反

{
    "MyValueOne": true,
    "MyValueTwo": 8
}

我已经使用不同的返回对象走了几条路径,但它们似乎总是有这些额外的值,而我想要返回的 JSON 通常包含在值或内容中,并包含在其他 JSON 中,例如: JsonResult(myObject) 或 ContentResult() { Content = serialisedVersionOfMyObject }

我什至尝试了 HttpResponseMessage 路径;但是在 HttpTrigger 和 Tast 的预期返回时遇到了麻烦

我觉得我错过了一些简单的东西;从 Azure 函数返回“仅 json”的预期/期望/直接方式是什么?

【问题讨论】:

  • Azure 函数 .net 5 返回 HttpResponseData 作为 Http 触发函数的输出。更多信息here
  • 太棒了;你想把它作为答案,我可以接受吗?
  • 当然,令人沮丧的是很难找到;并且当您创建函数时,它具有 Task 的返回类型(这是我被赶上的地方;试图返回 Visual Studio 作为签名创建的类型)
  • 好的,让我添加作为答案。

标签: .net azure-functions .net-5 azure-http-trigger


【解决方案1】:

Azure 函数 .net 5 返回 HttpResponseData 作为 Http 触发函数的输出。更多信息here.

文档中的文字:

HTTP 触发器将传入的 HTTP 请求消息转换为传递给函数的 HttpRequestData 对象。此对象提供来自请求的数据,包括标头、Cookie、身份、URL 和可选的消息正文。此对象是 HTTP 请求对象的表示,而不是请求本身。

同样,该函数返回一个HttpResponseData 对象,该对象提供用于创建 HTTP 响应的数据,包括消息状态代码、标头和可选的消息正文。

【讨论】:

    【解决方案2】:

    如果您需要返回一个对象(序列化),请尝试这样做:

    您的 Azure Function 中将有一个参数,类型和名称是 (HttpRequestData req),现在您需要使用它来创建响应:

    var response = req.CreateResponse(HttpStatusCode.OK);
    await response.WriteAsJsonAsync(itemData); <-- itemData = your object
    
    return response;
    

    【讨论】:

      猜你喜欢
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 2015-01-17
      相关资源
      最近更新 更多