如何配置AWS API Gateway对不支持的HTTP动词返回405响应
方案说明
你当前将DEFAULT_4XX覆盖为405的配置存在逻辑缺陷:该配置会将所有4xx类网关错误(包括参数错误400、认证失败401、权限不足403等)统一替换为405状态码,不符合HTTP状态码的使用规范。
推荐使用兜底路由方案实现需求,该方案可以精准匹配「路径存在但请求HTTP方法不支持」的场景,不会干扰其他错误类型的正常返回:
你可以在API中添加全局兜底路径/{proxy+}的ANY方法,所有未明确定义支持的HTTP动词请求都会命中该方法,直接返回405状态码。无需额外创建Lambda函数的轻量化SAM配置示例如下:
ExampleApi: Type: AWS::Serverless::Api Properties: StageName: Prod OpenApiVersion: '3.0.1' DefinitionBody: openapi: "3.0.1" info: title: "Example API" version: "1.0" paths: # 此处放置你已经定义的正常路径和方法配置 # 全局兜底路径,匹配优先级最低 /{proxy+}: x-amazon-apigateway-any-method: x-amazon-apigateway-integration: type: mock requestTemplates: application/json: | { "statusCode": 405 } responses: 200: statusCode: 405 responseTemplates: application/json: '{"message": "Method Not Allowed"}'
如果需要针对单个路径单独配置方法不支持的返回,只需要给对应路径单独配置ANY方法返回405即可,优先级高于全局兜底路由。
内容的提问来源于stack exchange,提问作者jakebrinkmann
相关产品推荐
相关产品推荐

