@middy/http-json-body-parser 无法解析 JSON
@middy/http-json-body-parser can't parsing JSON
你好,我想解析一个 JSON,所以我使用了 middy 中间件来处理它。但这是行不通的。需要解析的数据不能处理到dynamodb。我安装了@middy/http-json-body-parser、@middy/http-event-normalizer、@middy/http-error-handler,但仍然无法正常工作。这是我的代码。
import AWS from 'aws-sdk';
import middy from '@middy/core';
import httpJsonBodyParser from '@middy/http-json-body-parser';
import httpEventNormalizer from '@middy/http-event-normalizer';
import httpErrorHandler from '@middy/http-error-handler';
import createError from 'http-errors';
const nid = require('nid')({HEX:1, length:16})
const dynamodb = new AWS.DynamoDB.DocumentClient();
async function createAuction(event, context) {
const { title, description } = event.body;
const now = new Date();
const auction = {
id: nid(),
title,
description,
status: 'OPEN',
createdAt: now.toISOString(),
};
try {
await dynamodb.put({
TableName: process.env.AUCTIONS_TABLE_NAME,
Item: auction,
}).promise();
} catch(error) {
console.error(error);
throw new createError.InternalServerError(error);
}
return {
statusCode: 201,
body: JSON.stringify(auction),
};
}
export const handler = middy(createAuction)
.use(httpJsonBodyParser())
.use(httpEventNormalizer())
.use(httpErrorHandler());
这是结果截图。
问题与 dynamodb 无关。 title
和 description
没有被 middy 解析事件很可能是因为请求不是 content-type application/json 或 api 网关配置不正确。不可能用这么少的信息说,但是你应该在 async function createAuction(event, context) {
之后 console.log(event)
看看它是否包含你请求中有用的东西。
你好,我想解析一个 JSON,所以我使用了 middy 中间件来处理它。但这是行不通的。需要解析的数据不能处理到dynamodb。我安装了@middy/http-json-body-parser、@middy/http-event-normalizer、@middy/http-error-handler,但仍然无法正常工作。这是我的代码。
import AWS from 'aws-sdk';
import middy from '@middy/core';
import httpJsonBodyParser from '@middy/http-json-body-parser';
import httpEventNormalizer from '@middy/http-event-normalizer';
import httpErrorHandler from '@middy/http-error-handler';
import createError from 'http-errors';
const nid = require('nid')({HEX:1, length:16})
const dynamodb = new AWS.DynamoDB.DocumentClient();
async function createAuction(event, context) {
const { title, description } = event.body;
const now = new Date();
const auction = {
id: nid(),
title,
description,
status: 'OPEN',
createdAt: now.toISOString(),
};
try {
await dynamodb.put({
TableName: process.env.AUCTIONS_TABLE_NAME,
Item: auction,
}).promise();
} catch(error) {
console.error(error);
throw new createError.InternalServerError(error);
}
return {
statusCode: 201,
body: JSON.stringify(auction),
};
}
export const handler = middy(createAuction)
.use(httpJsonBodyParser())
.use(httpEventNormalizer())
.use(httpErrorHandler());
这是结果截图。
问题与 dynamodb 无关。 title
和 description
没有被 middy 解析事件很可能是因为请求不是 content-type application/json 或 api 网关配置不正确。不可能用这么少的信息说,但是你应该在 async function createAuction(event, context) {
之后 console.log(event)
看看它是否包含你请求中有用的东西。