W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Warning
如果你并非 OpenAPI 的「專家」,你可能不需要這部分內(nèi)容。
你可以在路徑操作中通過參數(shù) operation_id 設(shè)置要使用的 OpenAPI operationId。
務(wù)必確保每個操作路徑的 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"}]
如果你想用你的 API 的函數(shù)名作為 operationId 的名字,你可以遍歷一遍 API 的函數(shù)名,然后使用他們的 APIRoute.name 重寫每個 路徑操作 的 operation_id。
你應(yīng)該在添加了所有 路徑操作 之后執(zhí)行此操作。
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)
Tip
如果你手動調(diào)用 app.openapi(),你應(yīng)該在此之前更新 operationId。
Warning
如果你這樣做,務(wù)必確保你的每個 路徑操作函數(shù) 的名字唯一。
即使它們在不同的模塊中(Python 文件)。
使用參數(shù) include_in_schema 并將其設(shè)置為 False ,來從生成的 OpenAPI 方案中排除一個 路徑操作(這樣一來,就從自動化文檔系統(tǒng)中排除掉了)。
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/", include_in_schema=False)
async def read_items():
return [{"item_id": "Foo"}]
你可以限制 路徑操作函數(shù) 的 docstring 中用于 OpenAPI 的行數(shù)。
添加一個 \f (一個「換頁」的轉(zhuǎn)義字符)可以使 FastAPI 在那一位置截斷用于 OpenAPI 的輸出。
剩余部分不會出現(xiàn)在文檔中,但是其他工具(比如 Sphinx)可以使用剩余部分。
from typing import Optional, Set
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[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
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: