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

如何向AWS Lambda GET请求传入参数?React调用遇KeyError问题处理

问题描述

我通过API Gateway配置了AWS Lambda,该Lambda从event JSON中获取SeriesId值并使用它,Lambda代码如下:

import json
import boto3
from boto3.dynamodb.conditions import Key

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('TV-App-Seasons')

def lambda_handler(event, context):
    seriesId = int(event["SeriesId"])
    response = table.query(KeyConditionExpression=Key("SeriesId").eq(seriesId))
    data = response['Items']
            
    return {
        'statusCode': 200,
        'body': data
    }

使用以下测试事件JSON可正常运行:

{
  "SeriesId": 0
}

但在React中发送GET请求时无法正确传入参数(GET请求无法携带请求体)。我在Postman中用路径参数URL/Seasons?SeriesId=0可以正常工作,但React调用时出现KeyError。React代码如下:

function getSeasons(seriesId: number) {
    const response = fetch("URL/stage/Seasons?SeriesId=" + seriesId, {
      method: "GET",
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
      }
    })
      .then([...]);
  }

KeyError信息:

{
    errorMessage: "'SeriesId'", 
    errorType: 'KeyError', 
    requestId: '1a71a2d3-8c37-475d-8672-2958e3c84ca1',
    stackTrace: Array(1)
}

我反复检查过URL,问题不在这。根据资料尝试把seriesId = int(event["SeriesId"])改成seriesId = int(event["pathparameters"]["SeriesId"]),但还是报KeyError,连测试事件也无法正常运行了。

奇怪的是,这个请求在Postman和浏览器里都能正常工作,只有React不行。我还有另一个不需要event JSON的Lambda,Postman和React都能正常调用,CORS也已经启用,实在找不到问题所在。

解决方法

将Lambda/API Gateway设置为代理模式,之后就可以从queryStringParameters中读取SeriesId。配置完成后,只需稍微重构React代码以处理预检CORS响应,问题就解决了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:07:26