Fastapi 脚本接口规范优化
在编写Fastapi脚本提供自动化接口操作时,我们不仅要实现接口功能实用性,也要考虑接口的规范管理,这边以Fastapi官方文档作为一个切入点。
官方接口文档
默认官方接口文档如下图所示,宛如大杂烩一样
/doc接口文档
/redoc接口文档
优化方案
1、根据功能分组 2、根据权限分组 3、根据影响范围分组
这边采用根据影响范围分组,即将全局查询和单个用户增删改查进行分组
代码实现
修改代码如下:
from fastapi import FastAPI, HTTPException, Depends, APIRouter
# 初始化FastAPI应用
# app = FastAPI()
#创建APIRouter实例
router = APIRouter(
prefix="/api",
tags=["用户管理"]
)
ALLrouter = APIRouter(
prefix="/all",
tags=["全局用户管理"]
)
# 创建用户模型相关路由和操作
@router.post("/users/", response_model=UserOut, summary='创建用户')
def create_user(user: UserCreate, db: Session = Depends(get_db)):
。。。
@router.delete("/users/{user_id}", response_model=UserOut, summary='删除用户')
def delete_user(user_id: int, db: Session = Depends(get_db)):
。。。
@router.get("/users/{user_id}", response_model=UserOut, summary='查看单个用户')
def get_user(user_id: int, db: Session = Depends(get_db)):
。。。
@router.put("/users/{user_id}", response_model=UserOut, summary='修改用户')
def update_user(user_id: int, user_update: UserUpdate, db: Session = Depends(get_db)):
。。。
@ALLrouter.get("/user/auth/role", response_model=List[UserOut], summary='查看所有用户')
def get_all_users(db: Session = Depends(get_db)):
。。。
@ALLrouter.get("/users", response_model=List[UserOut], summary='查看所有用户')
def get_all_users(db: Session = Depends(get_db)):
。。。
# 创建 FastAPI 应用实例
app = FastAPI()
# 将 APIRouter 路由器包含到应用实例中
app.include_router(router)
app.include_router(ALLrouter)
查看接口文档
测试验证接口
最重要一点保证接口可用性,及时验证接口,测试接口路由正确原有接口不可用,可以使用本地工具postman、curl工具或者接口文档请求都可以。