W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
你可以在 FastAPI 應(yīng)用中自定義幾個元數(shù)據(jù)配置。
你可以設(shè)定:
使用 title、description 和 version 來設(shè)置它們:
from fastapi import FastAPI
description = """
ChimichangApp API helps you do awesome stuff. ????
## Items
You can **read items**.
## Users
You will be able to:
* **Create users** (_not implemented_).
* **Read users** (_not implemented_).
"""
app = FastAPI(
title="ChimichangApp",
description=description,
version="0.0.1",
terms_of_service="http://example.com/terms/",
contact={
"name": "Deadpoolio the Amazing",
"url": "http://x-force.example.com/contact/",
"email": "dp@x-force.example.com",
},
license_info={
"name": "Apache 2.0",
"url": "https://www.apache.org/licenses/LICENSE-2.0.html",
},
)
@app.get("/items/")
async def read_items():
return [{"name": "Katana"}]
通過這樣設(shè)置,自動 API 文檔看起來會像:
你也可以使用參數(shù) openapi_tags,為用于分組路徑操作的不同標(biāo)簽添加額外的元數(shù)據(jù)。
它接受一個列表,這個列表包含每個標(biāo)簽對應(yīng)的一個字典。
每個字典可以包含:
讓我們在帶有標(biāo)簽的示例中為 users 和 items 試一下。
創(chuàng)建標(biāo)簽元數(shù)據(jù)并把它傳遞給 openapi_tags 參數(shù):
from fastapi import FastAPI
tags_metadata = [
{
"name": "users",
"description": "Operations with users. The **login** logic is also here.",
},
{
"name": "items",
"description": "Manage items. So _fancy_ they have their own docs.",
"externalDocs": {
"description": "Items external docs",
"url": "https://fastapi.tiangolo.com/",
},
},
]
app = FastAPI(openapi_tags=tags_metadata)
@app.get("/users/", tags=["users"])
async def get_users():
return [{"name": "Harry"}, {"name": "Ron"}]
@app.get("/items/", tags=["items"])
async def get_items():
return [{"name": "wand"}, {"name": "flying broom"}]
注意你可以在描述內(nèi)使用 Markdown,例如「login」會顯示為粗體(login)以及「fancy」會顯示為斜體(fancy)。
提示
不必為你使用的所有標(biāo)簽都添加元數(shù)據(jù)。
將 tags 參數(shù)和路徑操作(以及 APIRouter)一起使用,將其分配給不同的標(biāo)簽:
from fastapi import FastAPI
tags_metadata = [
{
"name": "users",
"description": "Operations with users. The **login** logic is also here.",
},
{
"name": "items",
"description": "Manage items. So _fancy_ they have their own docs.",
"externalDocs": {
"description": "Items external docs",
"url": "https://fastapi.tiangolo.com/",
},
},
]
app = FastAPI(openapi_tags=tags_metadata)
@app.get("/users/", tags=["users"])
async def get_users():
return [{"name": "Harry"}, {"name": "Ron"}]
@app.get("/items/", tags=["items"])
async def get_items():
return [{"name": "wand"}, {"name": "flying broom"}]
信息
閱讀更多關(guān)于標(biāo)簽的信息路徑操作配置。
如果你現(xiàn)在查看文檔,它們會顯示所有附加的元數(shù)據(jù):
每個標(biāo)簽元數(shù)據(jù)字典的順序也定義了在文檔用戶界面顯示的順序。
例如按照字母順序,即使 users 排在 items 之后,它也會顯示在前面,因為我們將它的元數(shù)據(jù)添加為列表內(nèi)的第一個字典。
默認(rèn)情況下,OpenAPI 模式服務(wù)于 /openapi.json。
但是你可以通過參數(shù) openapi_url 對其進(jìn)行配置。
例如,將其設(shè)置為服務(wù)于 /api/v1/openapi.json:
from fastapi import FastAPI
app = FastAPI(openapi_url="/api/v1/openapi.json")
@app.get("/items/")
async def read_items():
return [{"name": "Foo"}]
如果你想完全禁用 OpenAPI 模式,可以將其設(shè)置為 openapi_url=None,這樣也會禁用使用它的文檔用戶界面。
你可以配置兩個文檔用戶界面,包括:
例如,設(shè)置 Swagger UI 服務(wù)于 /documentation 并禁用 ReDoc:
from fastapi import FastAPI
app = FastAPI(docs_url="/documentation", redoc_url=None)
@app.get("/items/")
async def read_items():
return [{"name": "Foo"}]
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: