Fastapi接口路由【模块化、去耦合】

文章目录

  • 一、前言
  • 二、实现
    • 1.目录结构
    • 2.文件内容


一、前言

Fastapi 中有个 APIRouter 类,可以将从属不同功能api接口分离到多个文件中,降低系统耦合度。这样多个系统之间如果有重复的模块,就可以拖拖拽拽复制粘贴了。


二、实现

1.目录结构

project【项目根目录】
   |-----server_router【路由目录】
   |		|------keyword_auto【功能模块1|		|			|------utils
   |		|			|------server.py
   |		|
   |		|------keyword_pick【功能模块2|		|			|------utils
   |		|			|------server.py
   |		|
   |		|------semantic_search【功能模块3|					|------utils
   |					|------server.py
   |		
   |-----server.py【服务启动脚本】

keyword_auto、keyword_pick、semantic_search 是部署在同一服务下的三个独立的功能模块,必要时可以拆开各自独立部署

2.文件内容

  1. 三个功能模块中的 server.py【各自定义自己的接口方法】
# 创建路由对象
from fastapi import APIRouter
app = APIRouter()


# 定义接口方法
@app.post("/custom")
async def root(data):
    return {"data": data, "code": 1, "msg": "请求成功"}



  1. 项目根目录下的 server.py【汇总各接口方法到同一服务下】
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

你可能感兴趣的:(Python,fastapi,python,前端)