FastApi教程|路径操作高级配置

发表时间:2020-03-09

OpenAPI的operationId

警告

如果您不是OpenAPI中的“专家”,则可能不需要它。

您可以 operationId 使用 参数 设置 在 路径操作中 使用 的OpenAPI operation_id

您必须确保每个操作的唯一性。

from fastapi import FastAPI

app = FastAPI()


@app.get("/items/", operation_id="some_specific_id_you_define")
async def read_items():
    return [{"item_id": "Foo"}]

使用 路径操作功能 名称作为operationId

如果要将API的函数名用作 operationId s,则可以遍历所有 函数名 ,并 使用它们 覆盖每个 路径操作 operation_id APIRoute.name

您应该在添加所有 路径操作 之后执行此 操作

from fastapi import FastAPI
from fastapi.routing import APIRoute

app = FastAPI()


@app.get("/items/")
async def read_items():
    return [{"item_id": "Foo"}]


def use_route_names_as_operation_ids(app: FastAPI) -> None:
    """
    Simplify operation IDs so that generated API clients have simpler function
    names.

    Should be called only after all routes have been added.
    """
    for route in app.routes:
        if isinstance(route, APIRoute):
            route.operation_id = route.name  # in this case, 'read_items'


use_route_names_as_operation_ids(app)

小费

如果您手动调用 app.openapi() ,则应在此 operationId 之前 更新 。

警告

如果这样做,则必须确保每个 路径操作函数 都有唯一的名称。

即使它们位于不同的模块(Python文件)中。

从OpenAPI排除

要将 路径操作 从生成的OpenAPI架构(以及自动文档系统)中 排除 ,请使用参数 include_in_schema 并将其设置为 False

from fastapi import FastAPI

app = FastAPI()


@app.get("/items/", include_in_schema=False)
async def read_items():
    return [{"item_id": "Foo"}]

docstring的高级描述

您可以限制 OpenAPI 的 路径操作函数 的文档字符串中使用的行 。

添加一个 \f (转义的“换页符”字符)会使 FastAPI 截断此时用于OpenAPI的输出。

它不会显示在文档中,但是其他工具(例如Sphinx)将可以使用其余的工具。

from typing import Set

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None
    tags: Set[str] = []


@app.post("/items/", response_model=Item, summary="Create an item")
async def create_item(*, item: Item):
    """
    Create an item with all the information:

    - **name**: each item must have a name
    - **description**: a long description
    - **price**: required
    - **tax**: if the item doesn't have tax, you can omit this
    - **tags**: a set of unique tag strings for this item
    \f
    :param item: User input.
    """
    return item

文章来源互联网,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890

微配音

Python Free

邮箱:417803890@qq.com
QQ:417803890

皖ICP备19001818号-4
© 2019 copyright www.pythonf.cn - All rights reserved

微信扫一扫关注公众号:

联系方式

Python Free