0

我有带有 Http 触发器的 TypeScript 天蓝色函数。我正在使用 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 对象。它是一个字符串

name=Janith&age=25 我无法阅读req.body.name示例代码。我需要它读作

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

我的function.json

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

2 回答 2

3

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

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

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

有关如何使用 postman 将原始 json 传递到请求中的更多信息,请参阅此文档。

于 2020-06-07T19:33:17.670 回答
1

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

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

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

于 2020-06-07T17:48:31.570 回答