这里我使用 FastAPI 编写“Hello world”:
main.py 文件说
import uvicorn
from fastapi import FastAPI
app = FastAPI()
if __name__ == '__main__':
uvicorn.run("main:app", host='0.0.0.0', port=80, reload=True)
@app.get("/api")
async def root():
return {"message": "Hello World"}
在此之前我安装了依赖项
pip install fastapi
pip install uvicorn
一切都很好,我启动了应用程序python main.py
,当我通过 url 输入浏览器时,http://127.0.0.1/api
我收到了珍贵的 json{"message":"Hello World"}
然后我添加静态文件托管:我创建一个静态目录,将 index.html 放在那里并添加一些行,然后更改我的 python 文件,如下所示:
import uvicorn
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
app = FastAPI()
app.mount('/', StaticFiles(directory='static',html=True))
if __name__ == '__main__':
uvicorn.run("main:app", host='0.0.0.0', port=80, reload=True)
@app.get("/api")
async def root():
return {"message": "Hello World"}
同时,托管静态文件对我有用 - http://127.0.0.1/
index.html 通过 url 打开,但是......对同一 url 的请求http://127.0.0.1/api
停止工作
此外,如果我将设置静态文件路由的行更改为
app.mount('/static/', StaticFiles(directory='static',html=True))
那么两个请求,byhttp://127.0.0.1/static/
和 by http://127.0.0.1/api
- 都会正常工作。
似乎存在路由冲突:沿较短路径的路由/
“中断”沿该路径的路由/api
我如何确保 index.html 已加载,并且位于“短”url 处http://127.0.0.1/
,并且我的 api 也能正常http://127.0.0.1/api
工作?
让我解释一下:我想基于FastAPI制作一个“穷人网站”:这样就可以从中加载带有JS的页面,加载后开始访问api
谢谢你!