fastapi: python web入门-FastAPI的路由介绍及使用
为何要用路由?
如果你正在构建一个应用程序或一个 Web API,你很少会把所有东西都放在一个文件中。前几篇文章写的例子所有的东西都在一个文件里,如果需求过多,则显得杂乱无章,这个时候就可以使用路由(APIRouter)改变这一现状。
利用 APIRouter 实现路由
APIRouter 属于 FastAPI 包,为多个路由创建路径操作。APIRouter 鼓励应用程序路由和逻辑的模块化和组织化。
APIRouter 类从 fastapi 包中导入,并创建一个实例。路由方法被创建并从创建的实例中分发,我这里以用户的基本功能为例(add_router.py),如下:
from fastapi import APIRouter
# create router
addRouter = APIRouter(
prefix='/add',
tags = ['添加路由']
)
@addRouter.get('/users')
def add_users():
return { "message": "这是添加用户接口"}
@addRouter.get('/content')
def add_content():
return { "message": "这是内容接口"}
上面的代码将创建一个路由器实例,它可以带有一些参数,比如下面两个的含义:
- prefix:在特定页面中 fastapi 提供的每个装饰器中添加前缀
- tags:这将帮助我们找到属于哪个类别的功能,同时这会显示在FastAPI自动生成的文档中(类似于相关文章的主题标签
将APIRouter 添加到FastAPI实例
APIRouter 类的工作方式与 FastAPI 类的工作方式相同。然而, uvicorn 不能使用 APIRouter 实例为应用程序服务,这与FastAPI 不同。使用 APIRouter 类定义的路由需要被添加到 FastAPI 实例中,以实现它们的功能。
为了使刚刚定义的路由可见,我们将使用 include_router()
方法把 add_router.py
文件的addRouter操作处理程序到主 FastAPI 实例中(main.py),如下:
from fastapi import FastAPI
from add_router import addRouter
import uvicorn
app = FastAPI()
app.include_router(addRouter)
if __name__ == "__main__":
uvicorn.run(app="main:app", host="0.0.0.0", port=5000, log_level="info", reload=True)
include_router()
方法负责在主程序的实例中加入用 APIRouter 类定义的路由添加到主应用程序的实例中,以使路由变得可见。 from add_router import addRouter 其中add_router是需要引入路由的文件名,如果add_router.py在某个文件夹下(apis/add_router.py),则add_router则要变成apis/add_router。 addRouter 为要引入的路由名,相当于函数名(addRouter = APIRouter()),如果APIRouter()赋值给router 则表达式为 router = APIRouter()。那么将APIRouter添加到fastapi实例则变成 from add_router import router,include_router(router)
测试路由
转载自:https://juejin.cn/post/7352342892785057843