我的目录结构如下:app〉routers〉 www.example.cominit.py www.example.com
在main中,我有以下代码:
from typing import Union
import uvicorn
from fastapi import FastAPI, APIRouter
from routers import items
app = FastAPI()
app.include_router(items.router, prefix='/items', tags=['items'])
@app.get("/")
async def root():
return {"message": "World World"}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)
在 www.example.com 我有以下内容:
from fastapi import APIRouter
router = APIRouter(
prefix="/items",
tags=["items"]
)
@router.api_route("/items")
async def items():
return {"test": "items"}
当我运行代码时,我可以转到我的URL http: www.example.com 。但是当我访问http: www.example.com 我看到一个错误:
{"detail": "not found"}
我该怎么解决这个问题?我试着调试这个,但当我打我的调试器,和类型的项目.路由器它告诉我,即时通讯正确导入从正确的路径.谢谢
1条答案
按热度按时间fwzugrvs1#
您给路由加了三次
/items
前缀!这意味着端点在
http://127.0.0.1:8000/items/items/items
可用。因此,您还添加了两次相同的标记,这是不必要的。您也可以通过打开文档页面查看openapi导出的路由规范来看到这一点。json
您只需为每个端点/路由规则指定一次路由和一次标记。试试这个:
完整示例: