我正在尝试使重定向在 AWS API 网关中工作。我将方法响应配置为在 header 和集成响应中包含 Location,我将参数设置为:Location = integration.response.body.location。但是,当我测试 API 时,它并没有将我重定向到该位置,而是在 API 页面上向我显示该位置的文本。有没有人遇到过这个?
显示的字符串实际上是正确的位置,但 API 不会将我重定向到该 URL。
最佳答案
可以在不使用 AWS Lambda 的情况下使用 API Gateway 重定向到硬编码的 URL。这是关于如何实现的导出的 OpenAPI 3.0 定义:
openapi: "3.0.0"
info:
title: 'TheApiName'
version: ''
paths:
"/":
get:
responses:
"302":
description: "302 response"
headers:
Location:
schema:
type: "string"
content: {}
x-amazon-apigateway-integration:
responses:
default:
statusCode: "302"
responseParameters:
method.response.header.Location: "'https://github.com/lukedemi/adventbot'"
requestTemplates:
application/json: "{\"statusCode\": 200}"
passthroughBehavior: "when_no_match"
type: "mock"
请注意,当您导入此 API 模板时,您仍然需要“部署”它,这样做时您需要创建一个“阶段”,然后将 API:Stage 与自定义域相关联(首次创建时需要 ACM 证书) API 网关中的自定义域),然后您只能将此单个 API 部署到域,因为您需要使用一个空的基本路径(解析为
/
)并且该映射不允许任何其他 /anything
由于 API Gateway 的工作方式而导致路由。
关于使用响应 302 从 aws api 网关重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38009315/