我的项目目录结构如下:
.
├── .env
│ ├── Include
│ ├── Lib
│ ├── Scripts
│ └── pyvenv.cfg
├── .vscode
│ └── launch.json
└── src
├── __pycache__
└── main.py
我在main.py文件中编写了一些代码:
import fastapi
from fastapi import FastAPI
app=FastAPI()
@app.get("/")
def health():
return "ok"
@app.get("/version")
def version():
return fastapi.__version__
然后启动项目:uvicorn main:app --port 9090 --root-path src --reload
我可以请求成功的APIs,但是当我尝试浏览swagger文档时,我将得到一个获取错误。
INFO: 127.0.0.1:50659 - "GET /docs HTTP/1.1" 200 OK
INFO: 127.0.0.1:50659 - "GET /src/openapi.json HTTP/1.1" 404 Not Found
我应该做一些配置来解决这个问题吗?我用python v3.10.5
和fastapi v0.85.0
,谢谢!
发布于 2022-09-22 06:46:50
在使用反向代理的情况下使用root-path
参数。如果反向代理向URL添加了路径,则代码仍然可以忽略该路径。
从医生那里:
在本例中,
具有一个带有剥离路径前缀的代理,这意味着您可以在代码中在/app上声明路径,但随后在顶层(代理)添加一个层,将FastAPI应用程序置于/api/v1这样的路径下。
在这种情况下,原始路径/app实际上将在/api/v1/app上服务。
尽管所有的代码都是在假设只有/app的情况下编写的。
它是用于指向项目结构中的文件夹的而不是。因此,删除您的uvicorn命令中的根路径参数,您应该是好的。
https://stackoverflow.com/questions/73809790
复制相似问题