Aws Api 网关无法加载快速 api swagger 文档页面

问题描述 投票:0回答:2

我已经向 aws API 网关部署了一个简单的快速 api。所有端点都工作正常,但是我无法加载 swagger 文档页面,我看到下面的错误

API代码:

from fastapi import FastAPI
from mangum import Mangum
import os
from fastapi.middleware.cors import CORSMiddleware
stage = os.environ.get('STAGE', None)
openapi_prefix = f"/{stage}" if stage else "/"
app = FastAPI(title="MyAwesomeApp",root_path="stage")


@app.get("/")
def get_root():
    return {"message": "FastAPI running in a Lambda function"}


@app.get("/info")
def get_root():
    return {"message": "TestInfo"}


app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)
handler = Mangum(app)

我尝试添加根,如下所述 https://fastapi.tiangolo.com/advanced/behind-a-proxy/ 对此的任何帮助将不胜感激。

amazon-web-services aws-api-gateway fastapi
2个回答
1
投票

我找到了我们需要添加的解决方案

root_path="/dev"
就像
app = FastAPI(title=settings.NAME,root_path="/dev")
创建快速 api 应用程序时。此根路径应与 api 网关阶段名称相同。 但是,如果您使用 fastapi 版本控制,则此方法不起作用


0
投票

正如OP提到的,文档提供了一些示例,说明如何使用阶段名称解决API网关问题。为了灵活性,我认为创建根路径环境变量可能很有用。

ENV=dev
app = FastAPI(title=settings.NAME, root_path=os.environ["ENV"])

同样,您可以通过将环境变量与版本路径连接起来使其适用于多个版本。

root_path=os.path.join("/", os.environ["ENV"], "api/v1")

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.