OpenAPI規(guī)范(也稱為Swagger規(guī)范),在Fastapi框架中它主要用來定義和文檔化API接口。
關于OpenAPI規(guī)范是一種用于描述和定義Web API的標準化規(guī)范。它可以使用JSON或YAML等格式來描述API的各種元數(shù)據(jù)信息等細節(jié),如接口路徑、請求方法、請求和響應的數(shù)據(jù)結構、參數(shù)、錯誤處理等。
通過使用OpenAPI規(guī)范,我們可以輕松地生成API文檔,并且可以使用各種工具來自動生成客戶端代碼、進行接口測試等。如Swagger UI,項目啟動后就可以查看到具體的路由定義信息,并可以進行調試等。
在整個框架應用中主要表現(xiàn)為:我們可以通過使用裝飾器和Python類型提示來定義API接口相關信息。框架本身會根據(jù)我們定義的一些相關規(guī)則信息自動生成OpenAPI文檔,并提供一個交互式的API文檔頁面,可以在其中查看和測試API接口。 這個文檔頁面基于Swagger UI,它可以根據(jù)OpenAPI規(guī)范自動生成,并提供了一些方便的功能,比如請求參數(shù)的驗證和自動生成請求示例等。
我們可以使用OpenAPI規(guī)范來定義接口的各種細節(jié),其中可以包括請求和響應的數(shù)據(jù)結構、參數(shù)、錯誤處理等信息。這樣可以使得我們的API接口更加清晰、易于理解和使用。
pythonfrom fastapi import FastAPIapp = FastAPI(title="項目標題I", description="項目文檔描述", version="1.0.0")
在上面的代碼中,主要是通過參數(shù)定義為我應用示例對應的以及相關API元數(shù)據(jù),例如標題、描述和版本號。
@app.get("/items/{item_id}", summary="路由標題", description="路由描述說明")def get_item(item_id: int): return {"item_id": item_id}
在上面的代碼中,主要是通過裝飾器參數(shù)為路由添加元數(shù)據(jù),例如摘要和描述信息。 當然還有其他的參數(shù)可以傳入。
from pydantic import BaseModelclass Item(BaseModel): name: str description: str = Field(..., description="描述信息")
在fastapi框架提供了一個openapi的自定義參數(shù),如下代碼所示:
app.openapi = custom_openapi
基于上面的openapi我就可有針對進行擴展和自定義其他擴展字段信息,如下示例代碼:
def custom_openapi(): if app.openapi_schema: return app.openapi_schema openapi_schema = get_openapi( title="FastAPIBoilerplate", version="0.0.1", summary="FastAPIBoilerplate", description='框架模板', routes=app.routes, ) openapi_schema["info"]["x-logo"] = { "url": "https:xxxxxxxx" } app.openapi_schema = openapi_schema return app.openapi_schema
如上代碼中:我們通過獲取app實例對象中已自動生成的 OpenAPI 規(guī)范后,在它毒藥的 info 對象中添加一個 x-custom 字段。這個字段可以是任何 JSON 兼容的數(shù)據(jù),例如字符串、數(shù)字、布爾值、列表或字典。如此完成后,當我們訪問:
http://127.0.0.1:31120/openapi.json
即可獲取到如下圖所示的結果:
當然我們還可以擴展其他的參數(shù)項: 如下代碼所示:
openapi_schema["info"]["x-custom"] = "自定義數(shù)據(jù)信息"
一般通過在 OpenAPI 規(guī)范中添加額外的、非標準的信息一般可以用于:
本文鏈接:http://www.tebozhan.com/showinfo-26-56428-0.html簡聊Fastapi框架中的OpenAPI規(guī)范
聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com