赞
踩
Fastapi 中有个 APIRouter 类,可以将从属不同功能api接口分离到多个文件中,降低系统耦合度。这样多个系统之间如果有重复的模块,就可以拖拖拽拽复制粘贴了。
project【项目根目录】
|-----server_router【路由目录】
| |------keyword_auto【功能模块1】
| | |------utils【业务逻辑1】
| | |------server.py【路由脚本1】
| |
| |------keyword_pick【功能模块2】
| | |------utils【业务逻辑2】
| | |------server.py【路由脚本2】
| |
| |------semantic_search【功能模块3】
| |------utils【业务逻辑3】
| |------server.py【路由脚本3】
|
|-----server.py【服务启动脚本】
keyword_auto、keyword_pick、semantic_search 是部署在同一服务下的三个独立的功能模块,必要时可以拆开各自独立部署
# 创建路由对象
from fastapi import APIRouter
app = APIRouter()
# 定义接口方法
@app.post("/custom")
async def root(data):
return {"data": data, "code": 1, "msg": "请求成功"}
import uvicorn
from fastapi import FastAPI
# 引入路由
from server_router.keyword_auto.server import app as app_keyword_auto
from server_router.keyword_pick.server import app as app_keyword_pick
from server_router.semantic_search.server import app as app_semantic_search
# 创建服务
app = FastAPI()
# 路由挂载
app.include_router(app_keyword_auto, prefix='/keyword_auto', tags=['检索词联想', '列表页'])
app.include_router(app_semantic_search, prefix='/semantic_search', tags=['语义检索条件聚合', '列表页+详情页'])
app.include_router(app_keyword_pick, prefix='/keyword_pick', tags=['文本关键词提取', '建议生产环境下使用'])
if __name__ == '__main__':
# 启动服务
uvicorn.run(app="server:app", host='0.0.0.0', port=2333, workers=2)
调用方式:
ip:端口/挂载路由/模块各自路由
当前例子中的路由为 192.168.0.233:2333/keyword_auto/custom
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。