我使用 AWS CloudFormation 模板或 OpenAPI 定义来创建一个具有代理资源的 Amazon API Gateway API。当我试着将 URL 路径参数添加至该 API 时,我收到了错误消息“Invalid mapping expression specified”。如何解决此错误?
简短描述
当代理路径参数 {proxy+} 没有定义的 URL 路径参数映射时,API Gateway 会返回一个 Invalid mapping expression specified 错误。
要解决此错误,请执行以下操作:
解决方法
对于 AWS CloudFormation 模板
1. 更新 CloudFormation 模板,以便将 RequestParameters 值设置为 true。
示例 CloudFormation 模板 RequestParameters
...
.
.
ProxyMethod:
Type: 'AWS::ApiGateway::Method'
Properties:
.
.
RequestParameters:
method.request.path.proxy: true
Integration:
RequestParameters:
integration.request.path.proxy: 'method.request.path.proxy'
IntegrationHttpMethod: ANY
.
.
...
2. 使用 CloudFormation 模板更新您的 API,从而来更新 AWS CloudFormation 堆栈。
**注意:**有关更新 API Gateway 资源的更多信息,请参阅 Amazon API Gateway 资源类型参考。
对于 OpenAPI 定义
1. 更新您的 API 定义,使 x-amazon-apigateway-any-method 部分下的 parameters 具有以下值:
"x-amazon-apigateway-any-method": {
"parameters": [
{
"name": "proxy",
"in": "path",
"required": true,
"type": "string"
}
]
....
....
}
2. 通过将更新后的 API 定义文件导入 API Gateway 来更新 API。
**注意:**有关更多信息,请参阅 OpenAPI 网站上的描述参数。
测试设置
1. 在 API Gateway 控制台中,选择您的 API 的名称。
2. 根据使用案例的需要添加 URL 路径参数。如果您的代理路径参数包含正确定义的 URL 路径参数映射,则不会显示错误。
相关信息
x-amazon-apigateway-integration.requestParameters 对象
设置与代理资源的代理集成
为 REST API 设置数据转换