交互式文档说明

fastapi提供了两种查看交互式API文档的方式,一种是由Swagger UI提供,另一种是由ReDoc提供。
通过交互式API文档,可以看到自定义的API的说明,并且可以利用其提供的交互方式,进行接口测试。

打开方法

在默认情况下面打开交互式API文档的路径分别是:

交互式API文档提供者

打开地址

Swagger UI

http://host:port/docs

ReDoc

http://host:port/redoc

前提:在fastapi中定义了接口,并运行了服务器。

Swagger UI提供的交互式API文档界面介绍

由于两者提供的交互式API文档功能基本相同,此处仅针对Swagger UI提供的交互式API文档进行介绍和说明。

初始界面介绍:

fastapi 目录架构 fastapi官方文档_API


接口界面介绍:

fastapi 目录架构 fastapi官方文档_API_02

更改界面

修改信息区内容

修改信息区内容,主要是通过在FastAPI实例对象中,通过修改对应的形参进行修改。

信息区内容

FastAPI中形参

标题内容

title

版本号

version

打开API JSON格式地址

openapi_url

打开Swagger UI交互文档地址

docs_url

打开ReDoc交互文档地址

redoc_url

描述信息

description

# 演示修改信息区的内容
app = FastAPI(title="引用请求体参数API",
            version="1.0.0",
            description="这里描述了引用请求体参数的三种方式的API",
            openapi_url="/api/api.json",
            docs_url="/swageui",
            redoc_url="/redocui")

修改后效果:

fastapi 目录架构 fastapi官方文档_fastapi_03

修改接口总览区信息

接口总览区信息是根据我们创建的路径装饰器生成的。
在fastapi中get,post等请求方法中都存在着相应的参数来控制着信息。

接口总览区内容

请求方法中形参

组别

tags

摘要

summary

访问路径

path

# 演示通过修改请求方法的形参修改交互文档显示的内容
@app.post("/items",tags=["BaseModel"],summary="通过继承BaseModel引用请求体数据")
async def create_item(item:Item):
    return item
from fastapi import Body
@app.put("/items",tags=["BaseModel"],summary="通过Body函数引用请求体数据")
async def update_item(name:str=Body(),tax:float=Body()):
    return {"name":name,"tax":tax}

修改后显示界面:

fastapi 目录架构 fastapi官方文档_fastapi_04

修改接口界面信息

修改接口界面中信息主要通过Path,Query,Body和Field中的形参进行修改的。
只有接口的说明是在路径修饰器的请求方法形参中修改。

接口界面信息

对应的形参

接口摘要

路径装饰器中请求方法中的summary形参

接口描述

路径装饰器中请求方法中的description形参

描述

Path,Query,Body和Field中的description参数

样例

Path,Query,Body和Field中的example或examples参数

是否废弃

Path,Query,Body和Field中的deprecated参数

# 演示接口界面信息修改
from fastapi import Query
@app.get("/items",description="这个是一个查询参数引用的示例API",summary="查询一个商品")
async def read_items(
    q:Union[str,None] = Query(default=None,
    title="Query String",
    min_length=3,
    description="Query string for the items to search in the database that have a good match",
    example="query",
    deprecated=True)
):
    results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
    if q:
        results.update({"q": q})
    return results

演示结果:

fastapi 目录架构 fastapi官方文档_API_05