Muh*_*min 0 python reverse-proxy aws-application-load-balancer fastapi
我正在 AWS ALB 后面部署一个快速 API 应用程序,侦听器规则路径模式/api/v1/指向快速 API。我的应用程序看起来像这样
from typing import Union
import os
import mysql.connector
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
print("Root path hit")
return {"App": "Fargate"}
@app.get("/api/v1/")
def read_apiv1():
print("Root path hit")
return {"App": "Path Fargate API v1"}
Run Code Online (Sandbox Code Playgroud)
我使用 docker 在 ECS 中部署了应用程序,我的 docker run 命令是
CMD ["uvicorn", "app.main:app", "--proxy-headers", "--host", "0.0.0.0", "--port", "80", "--root-path", "/api/v1"]
Run Code Online (Sandbox Code Playgroud)
现在,当我点击后缀为 的 AWS ALB dns 时,我会看到抛出响应的/api/v1/端点。但是,根据快速 API 的文档,它应该使用./api/v1{"App": "Path Fargate API v1"}/
谁能帮助我为什么我会出现这种意想不到的行为?我是否必须/api/v1在所有端点之前手动写入?
小智 5
这就是我添加/api/v1到所有路线的方式:
from sys import prefix
from typing import Union
import os
from fastapi import FastAPI, APIRouter
app = FastAPI()
prefix_router = APIRouter(prefix="/api/v1")
@prefix_router.get("/")
def read_root():
print("Root path hit")
return {"App": "Fargate"}
@prefix_router.get("/something/")
def read_apiv1():
print("Root path hit")
return {"App": "Path Fargate API v1"}
app.include_router(prefix_router)
Run Code Online (Sandbox Code Playgroud)
此后,当我转到http://127.0.0.1/api/v1/something/路径时,它会自动将我重定向到第二条路线。
| 归档时间: |
|
| 查看次数: |
3017 次 |
| 最近记录: |