【问题标题】:TypeScript Azure Function Read Body of POST method as JSONTypeScript Azure 函数将 POST 方法的主体读取为 JSON
【发布时间】:2020-09-26 15:11:44
【问题描述】:

我有带有 Http 触发器的 TypeScript azure 函数。我正在使用 POST 方法并将正文发送到 azure 函数。 但我无法阅读,请求正文数据作为 Javascript 对象。

我的功能代码

import { AzureFunction, Context, HttpRequest } from "@azure/functions"

const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
    context.log('HTTP trigger function processed a request.');
    const name = (req.query.name || (req.body && req.body.name));

    if (name) {
        context.res = {
            // status: 200, /* Defaults to 200 */
            body: "Ar Item search " + (req.query.name || req.body.name)
        };
    }
    else {
        context.res = {
            status: 400,
            body: "Please pass a name on the query string or in the request body"
        };
    }
};

export default httpTrigger;

邮递员请求

调试数据

由于上面的图像正文不是普通的 http post 请求正文的 Json 对象。它是一个字符串,如

姓名=贾尼思&年龄=25 我无法将req.body.name 作为示例代码阅读。 我需要它读作

{
  "name":"Janith",
  "age":25
}

我的函数.json

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    }
  ],
  "scriptFile": "../dist/ARItemSearch/index.js"
}

【问题讨论】:

  • 您选择后一个答案的任何原因?

标签: node.js typescript azure azure-functions azure-http-trigger


【解决方案1】:

您需要在邮递员的body 选项卡中使用raw 选项,然后按如下方式传递一个json-

{
  "name":"Janith",
  "age":25
}

然后您将能够在您的函数中使用req.body 检索 json 对象。

请参阅doc 了解有关如何使用邮递员将原始 json 传递到请求中的更多信息。

【讨论】:

    【解决方案2】:

    我认为您只需要直接使用 req.body 并在存储之前针对您的架构进行验证,

    const {error, schema} = await validate(User, req.body);
    

    我还注意到 POSTMAN 上的一件事,您需要使用 raw 并将其作为 JSON 对象发送,而不是作为请求参数发送。

    【讨论】:

      猜你喜欢
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 1970-01-01
      • 2021-05-04
      相关资源
      最近更新 更多