22.FastAPI开发大型应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了22.FastAPI开发大型应用相关的知识,希望对你有一定的参考价值。

参考技术A 在前面的代码示例中,我们都是在一个文件创建路由;在实际开发中,一般会根据需求进行模块划分,代码项目中也会根据模块进行开发,不同的模块采用不同的文件来编写程序。在FastAPI中提供了APIRouter来组织路由, 相当于Flask中的 Blueprints。

1.导入 APIRouter

2.使用 APIRouter 定义路由操作

使用 @router.get等对路由方法进行修饰即可,使用方式与FastAPI类相同。

在FastAPI主体程序中,将具有 APIRouter 的子模块导入,然后通过FastAPI类的 include_router 将路由添加到应用程序。代码示例如下:

目录结构:

上面的目录结构中,test与demo是Python包。

test.py

demo.py

main.py

启动应用,然后进行请求测试:

在实际开发中,一个文件中的路由是有相同的部分的,比如:“/test/hello1”、“/test/hello2”中,“/test”是相同的路由路径,在FastAPI中,可以通过APIRouter的参数来添加路由的前缀,而不需要在每个路由定义的时候分别去添加。APIRouter的参数:

除此之外,我们有时候在不同的文件中还需要相同的路由前缀,所以,APIRouter 最好在包的初始化文件 __init__.py 中声明和定义。下面将上面的代码修改如下:

demo__init__.py

demo.py

test__init__.py

test.py

main.py

从以上代码中可以看出,对应定义的路由:

运行测试:

需要注意:在包的初始化文件 __init__.py 文件中,一定要对使用了router的python文件进行import,并且import指令要放到router声明的后面,以便将使用了router的python文件编译进来。

在FastAPI中,也可以使用FastAPI类的include_router函数的相应参数进行路由前缀的设置,当然也可以设置其他参数,这样就不必在APIRouter声明中设置参数。如将上面的代码中修改如下:

__init__.py 中的代码修改为:

main.py

运行结果与上面的代码是相同的。

在FastAPI中,也可以在同一路由上使用不同的前缀来多次使用 .include_router();这样做在有些场景下可能有用,例如以不同的前缀公开同一个的 API,比方说 /api/v1 和 /api/latest;这是一个可能并不真正需要的高级用法,但万一你有需要了就能够用上。

如:在上面的main.py中增加一行:

这样,我们在请求 curl http://127.0.0.1:8000/demo2/hello2 也会返回与 curl http://127.0.0.1:8000/demo/hello2 相同的结果。

与在 FastAPI 应用程序中包含 APIRouter 的方式相同,也可以在另一个 APIRouter 中包含 APIRouter。

如:上面的代码中,我们在 test__init__.py 中增加一行:

这样,就可以请求: curl http://127.0.0.1:8000/test/hello2 ,返回结果:

本篇主要讲述了FastAPI的APIRouter的使用方法,主要以其prefix参数以及include_router函数的prefix参数的使用来说明如何组织路由,通过组织路由来完成大型项目的开发,以便我们可以在多个文件中组织和管理软件的代码。

vueadmin-fastapi

参考技术A vue-element-admin-fastapi是一款后端使用 python 的 fastapi 框架开发 api 接口,前端使用 vue-element-admin 前端组件的快速后台管理系统开发框架。使用该框架通过简单的配置就可以专注于业务开发,省去菜单-角色-人员-组织等权限管理部分的开发,可以适用于大多数管理后台应用场景。

vue-element-admin-fastapi的目录结构:

开发规则整理:

如何快速本地启动

python packages

ip及数据库连接

数据准备

开发环境启动

https://gitee.com/YeLangTu/vue-element-admin-fastapi

以上是关于22.FastAPI开发大型应用的主要内容,如果未能解决你的问题,请参考以下文章

QT能开发大型软件吗?

go语言能做啥?

“低代码”开发管理应用,这家大型连锁企业也说好

如何使用 Socket.io 和 Node.js 开发大型聊天应用程序 [关闭]

使用 Laravel-Modules 扩展包通过模块化开发大型 Laravel 应用

IOING在开发SPA大型应用时有哪些必要的技术条件?