日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

簡聊Fastapi框架中的OpenAPI規(guī)范

來源: 責(zé)編: 時(shí)間:2024-01-02 17:28:40 294觀看
導(dǎo)讀OpenAPI規(guī)范(也稱為Swagger規(guī)范),在Fastapi框架中它主要用來定義和文檔化API接口。關(guān)于OpenAPI規(guī)范是一種用于描述和定義Web API的標(biāo)準(zhǔn)化規(guī)范。它可以使用JSON或YAML等格式來描述API的各種元數(shù)據(jù)信息等細(xì)節(jié),如接口路徑、

OpenAPI規(guī)范(也稱為Swagger規(guī)范),在Fastapi框架中它主要用來定義和文檔化API接口。R5v28資訊網(wǎng)——每日最新資訊28at.com

關(guān)于OpenAPI規(guī)范是一種用于描述和定義Web API的標(biāo)準(zhǔn)化規(guī)范。它可以使用JSON或YAML等格式來描述API的各種元數(shù)據(jù)信息等細(xì)節(jié),如接口路徑、請(qǐng)求方法、請(qǐng)求和響應(yīng)的數(shù)據(jù)結(jié)構(gòu)、參數(shù)、錯(cuò)誤處理等。R5v28資訊網(wǎng)——每日最新資訊28at.com

通過使用OpenAPI規(guī)范,我們可以輕松地生成API文檔,并且可以使用各種工具來自動(dòng)生成客戶端代碼、進(jìn)行接口測試等。如Swagger UI,項(xiàng)目啟動(dòng)后就可以查看到具體的路由定義信息,并可以進(jìn)行調(diào)試等。R5v28資訊網(wǎng)——每日最新資訊28at.com

R5v28資訊網(wǎng)——每日最新資訊28at.com

在整個(gè)框架應(yīng)用中主要表現(xiàn)為:我們可以通過使用裝飾器和Python類型提示來定義API接口相關(guān)信息。框架本身會(huì)根據(jù)我們定義的一些相關(guān)規(guī)則信息自動(dòng)生成OpenAPI文檔,并提供一個(gè)交互式的API文檔頁面,可以在其中查看和測試API接口。 這個(gè)文檔頁面基于Swagger UI,它可以根據(jù)OpenAPI規(guī)范自動(dòng)生成,并提供了一些方便的功能,比如請(qǐng)求參數(shù)的驗(yàn)證和自動(dòng)生成請(qǐng)求示例等。R5v28資訊網(wǎng)——每日最新資訊28at.com

應(yīng)用主要場景:

我們可以使用OpenAPI規(guī)范來定義接口的各種細(xì)節(jié),其中可以包括請(qǐng)求和響應(yīng)的數(shù)據(jù)結(jié)構(gòu)、參數(shù)、錯(cuò)誤處理等信息。這樣可以使得我們的API接口更加清晰、易于理解和使用。R5v28資訊網(wǎng)——每日最新資訊28at.com

1.定義應(yīng)用app對(duì)象的元數(shù)據(jù)

pythonfrom fastapi import FastAPIapp = FastAPI(title="項(xiàng)目標(biāo)題I", description="項(xiàng)目文檔描述", version="1.0.0")

在上面的代碼中,主要是通過參數(shù)定義為我應(yīng)用示例對(duì)應(yīng)的以及相關(guān)API元數(shù)據(jù),例如標(biāo)題、描述和版本號(hào)。R5v28資訊網(wǎng)——每日最新資訊28at.com

2.定義路由的元數(shù)據(jù)

@app.get("/items/{item_id}", summary="路由標(biāo)題", description="路由描述說明")def get_item(item_id: int):    return {"item_id": item_id}

在上面的代碼中,主要是通過裝飾器參數(shù)為路由添加元數(shù)據(jù),例如摘要和描述信息。 當(dāng)然還有其他的參數(shù)可以傳入。R5v28資訊網(wǎng)——每日最新資訊28at.com

3.定義模型的元數(shù)據(jù)

from pydantic import BaseModelclass Item(BaseModel):    name: str    description: str = Field(..., description="描述信息")

OpenAPI 自定義和擴(kuò)展

1.示例

在fastapi框架提供了一個(gè)openapi的自定義參數(shù),如下代碼所示:R5v28資訊網(wǎng)——每日最新資訊28at.com

app.openapi = custom_openapi

基于上面的openapi我就可有針對(duì)進(jìn)行擴(kuò)展和自定義其他擴(kuò)展字段信息,如下示例代碼:R5v28資訊網(wǎng)——每日最新資訊28at.com

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實(shí)例對(duì)象中已自動(dòng)生成的 OpenAPI 規(guī)范后,在它毒藥的 info 對(duì)象中添加一個(gè) x-custom 字段。這個(gè)字段可以是任何 JSON 兼容的數(shù)據(jù),例如字符串、數(shù)字、布爾值、列表或字典。如此完成后,當(dāng)我們?cè)L問:R5v28資訊網(wǎng)——每日最新資訊28at.com

http://127.0.0.1:31120/openapi.json

即可獲取到如下圖所示的結(jié)果:R5v28資訊網(wǎng)——每日最新資訊28at.com

R5v28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)然我們還可以擴(kuò)展其他的參數(shù)項(xiàng): 如下代碼所示:R5v28資訊網(wǎng)——每日最新資訊28at.com

 openapi_schema["info"]["x-custom"] = "自定義數(shù)據(jù)信息"

2.自定義和擴(kuò)展作用和說明

一般通過在 OpenAPI 規(guī)范中添加額外的、非標(biāo)準(zhǔn)的信息一般可以用于:R5v28資訊網(wǎng)——每日最新資訊28at.com

  • 提供額外的文檔信息。
  • 集成其他工具參數(shù)信息。
  • 包含額外的元數(shù)據(jù)。如 API 的版本歷史、貢獻(xiàn)者列表、相關(guān)資源的鏈接等。

本文鏈接:http://www.www897cc.com/showinfo-26-56428-0.html簡聊Fastapi框架中的OpenAPI規(guī)范

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 面試官:說說JVM內(nèi)存整體結(jié)構(gòu)?線程私有還是共享的?

下一篇: 老生常談 C# 開發(fā) Windows 消息循環(huán)機(jī)制的原理和流程

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 察哈| 天津市| 福安市| 桑日县| 乌鲁木齐县| 顺义区| 阜平县| 凤山县| 菏泽市| 交城县| 安西县| 安福县| 阳春市| 民和| 南通市| 清河县| 东兴市| 繁昌县| 新丰县| 梧州市| 辛集市| 汉寿县| 那坡县| 永康市| 盐边县| 东莞市| 云阳县| 湟源县| 镇康县| 周口市| 沐川县| 卢氏县| 大邑县| 五峰| 贡嘎县| 鄂伦春自治旗| 东山县| 兰坪| 瑞安市| 舟曲县| 巩义市|