You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何aws-serverless-express将POST /retrieveInfo请求路由至GET /路径?

问题分析与解决

核心原因

你遇到的路由错误是因为API Gateway传入的是v2格式的事件(version: '2.0'),而aws-serverless-express默认只兼容API Gateway v1格式的事件。v2事件的请求方法、路径等信息嵌套在requestContext.http下,而aws-serverless-express会尝试读取顶层的httpMethod和path字段,导致解析错误,最终匹配到了默认的GET /路由。

解决方案

需要将API Gateway v2事件转换为aws-serverless-express兼容的格式,官方提供了eventHelper工具来处理这个转换:

修改后的代码

/* global fetch */
import express from 'express';
import serverless, { eventHelper } from 'aws-serverless-express';

const app = express();

app.use(express.json());

app.get('/', (request, response) => {
  response.json({'pizza': 'potato'});
})

app.post('/retrieveInfo', (request, response) => {
  response.json({'pizza': 'pop'});
});

const server = serverless.createServer(app);

export const handler = (event, context) => {
  console.log("Event: ", event);
  console.log("Context: ", context);
  // 转换API Gateway v2事件为兼容格式
  const convertedEvent = eventHelper.convertApiGatewayV2Event(event);
  serverless.proxy(server, convertedEvent, context);
};

额外检查点

  • 确保你的aws-serverless-express版本是最新的(>=3.4.0),旧版本可能没有eventHelper工具
  • 确认API Gateway的集成配置中,没有修改请求路径或方法的映射规则

内容的提问来源于stack exchange,提问作者Dominik Cubic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 01:15:12