Azure函数nodejs:如何从这个Azure函数的请求体中提取对象?

ruoxqz4g  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(101)

在nodejs azure函数中:

import {
  app,
  HttpRequest,
  HttpResponseInit,
  InvocationContext,
} from "@azure/functions";

export async function workerfunction(
  request: HttpRequest,
  context: InvocationContext
): Promise<HttpResponseInit> {
  context.log(`Http function processed request for url "${request.url}"`);
  context.log("request.body: ", request.body);

字符串
我正在测试Azure Portal:试验体:

{"body":"this is a test message"}


以及印刷的信息:

2023-08-02T06:49:19Z   [Information]   request.body:  ReadableStream { locked: true, state: 'closed', supportsBYOB: false }


假设我在请求体中有一个复杂的对象,它包含要由我的worker函数处理的数据,我如何在这个azure函数中从请求体中读取对象?

g6ll5ycj

g6ll5ycj1#

2023-08- 02 T06:49:19 Z [信息]请求.正文:ReadableStream { locked:true,状态:“关闭”,支持BYOB:错误}
问题在于,您记录的是ReadableStream对象,而不是请求体中JSON对象的实际内容。

  • 您直接记录了request.body,它是一个ReadableStream对象。需要读取和处理此流以获得实际内容。
  • 检查下面的代码,以便您能够从请求体读取和处理JSON对象。
    更新代码:
import {
  app,
  HttpRequest,
  HttpResponseInit,
  InvocationContext,
} from "@azure/functions";

export async function workerfunction(
  context: InvocationContext,
  request: HttpRequest
): Promise<HttpResponseInit> {
  context.log(`Http function processed request for url "${request.url}"`);

  try {
    const requestBody = request.body;

    context.log("request.body: ", requestBody);

    // Your processing logic using requestBody

    return {
      status: 200,
      body: "Request processed successfully",
    };
  } catch (error) {
    context.log.error("Error processing request:", error);

    return {
      status: 500,
      body: "Internal server error",
    };
  }

字符串

部署状态:

x1c 0d1x的数据
导航到门户< HttpTrigger函数中的函数应用。


回复:


相关问题