flaskapi 路由管理APIRouter

前言

  开发一个应用程序或API,不会将所有的代码都放到main.py文件中。Flask 使用蓝图(BluePrint)来管理路由,FastAPI 提供了一个类似的工具APIRouter。

路由管理

1、fastapi 项目目录层级

 

2、api/cms/user.py 定义 API 路由和处理函数。实例化  APIRouter 类 ,参数 prefix 添加路由前缀,tags 添加接口文档分类。

 prefix 和 tags 这俩个参数也可以在注册路由的时候定义。

from fastapi import APIRouter,Request,Query


user = APIRouter()
# user = APIRouter(prefix='/ai', tags=['user'])

@user.get('/test')
async def test(roleName: str = Query(None)):
    # 请求url:http://127.0.0.1:8000/test?roleName=admin
    return {'message': roleName}

@user.get('/pro/{id}')
async def test(id: int = None ):
    # 请求url:http://127.0.0.1:8000/test/10
    return {'message': roleName}

@user.post('/dev')
async def dev(data: dict):
    # 请求body数据验证为dict
    return {'message': data}

 

3、在 main.py 模块,注册 api/cms/user.py 里的 user 对象

from api.user import user
from fastapi import FastAPI
import uvicorn

app = FastAPI()


@app.get("/home")
async def get():
    return {'message':'OK'}

# 也可以在这里 定义 prefix 和 tags
app.include_router(user,prefix='/ai', tags=['user'])
# 注册user对象
# app.include_router(user)


if __name__ == "__main__":
    uvicorn.run(app='main:app', host="0.0.0.0", log_config='./uvicorn_config.json', port=8000)

 

4、路由也可以单独写在routers文件夹(routers/cms.py),好处是项目层级清晰,可读性强,路由都存放一个地方,方便管理

from fastapi import APIRouter
from api.cms.user import user


cms = APIRouter()
cms.include_router(user, prefix='/ai', tags=['user'])

 routers/__init__.py 定义注册路由

from .cms import cms
from fastapi import FastAPI

# 注册路由
def register_router(app: FastAPI):
    app.include_router(cms)
    # app.include_router(cms, prefix='/ai', tags=['user'])

main.py 调用注册路由方法

from routers import register_router
from fastapi import FastAPI
import uvicorn

app = FastAPI()


@app.get("/home")
async def get():
    return {'message':'OK'}


# 调用注册路由方法
register_router(app)


if __name__ == "__main__":
    uvicorn.run(app='main:app', host="0.0.0.0", log_config='./uvicorn_config.json', port=8000)

 

然后启动服务

swagger文档: http://127.0.0.1:8000/docs  

redoc文档:http://127.0.0.1:8000/redoc

posted @ 2024-08-13 18:21  三只松鼠  阅读(100)  评论(0编辑  收藏  举报