一、FastAPI的安装
参考
【大模型应用开发-FastAPI框架】(一)FastAPI概述和安装-CSDN博客
二、自定义swagger详细参数
1、自定义项目信息
main.py
import logging
import warnings
import uvicorn
from fastapi import FastAPI
from modules.common.controller.index import index_api
from modules.news.controller.news import news_api
from modules.user.controller.user import user_api
warnings.filterwarnings('ignore')
logger = logging.getLogger(__name__)
app = FastAPI(
title='Fastapi Demo API Docs',
description='API接口文档',
version='1.0.0',
docs_url='/docs',
redoc_url='/redocs'
)
app.include_router(index_api, tags=["首页"])
app.include_router(user_api, tags=["用户接口"])
app.include_router(news_api, tags=["新闻接口"])
if __name__ == '__main__':
uvicorn.run(app='main:app', host='0.0.0.0', port=8000, reload=True, workers=1)
效果展示:
2、自定义接口分组信息
入口文件定义好接口分组描述
同时,每个入口文件中,也要跟和main中的tags保持一致
参考代码:
import logging
from fastapi import APIRouter
logger = logging.getLogger(__name__)
news_api = APIRouter()
@news_api.get("/news/list", tags=["新闻接口"], summary='新闻列表', description='获取新闻列表')
async def news_list():
return 'list'
@news_api.get("/news/info/{id}", tags=["新闻接口"], summary='新闻列表', description='获取新闻列表')
async def news_info(id: int):
return id
效果展示
3、详细接口参数说明
modules/user/controller/user.py
import logging
from fastapi import APIRouter, Path, Query
logger = logging.getLogger(__name__)
user_api = APIRouter()
@user_api.get("/user/list", tags=["用户接口"], summary='用户列表', description='获取用户列表')
async def user_list():
return 'list'
@user_api.get("/user/info/{id}", tags=["用户接口"], summary='用户列表', description='获取用户列表')
async def user_info(id: int = Path(..., title='用户ID', description='用户ID值(url路径中获取)'),
name: str = Query(None, title='用户名', description='用户名(键值对获取?name=aa)')):
return f"{id},{name}"
说明
1)获取url路径中参数,使用fastapi中的Path
@user_api.get("/user/info/{id}", tags=["用户接口"], summary='用户列表', description='获取用户列表') async def user_info(id: int = Path(..., title='用户ID', description='用户ID值(url路径中获取)')
其中...说明这个参数是必传的,title和description是这个参数的标题和描述说明。
2)获取键值对参数,使用fastapi中的Query
@user_api.get("/user/info/{id}", tags=["用户接口"], summary='用户列表', description='获取用户列表') async def user_info(id: int = Path(..., title='用户ID', description='用户ID值(url路径中获取)'), name: str = Query(None, title='用户名', description='用户名(键值对获取?name=aa)')): return f"{id},{name}"
其中,None说明这个参数的默认值,也可以定义其他的。如果是...是必传的,否则非必传
效果展示