python 測(cè)試開(kāi)發(fā)請(qǐng)關(guān)注這個(gè)新框架

如果你之前有接觸 python 測(cè)試開(kāi)發(fā),那你應(yīng)該會(huì)聽(tīng)過(guò) django 或者 flask。但是最近一個(gè)新的框架出現(xiàn)在人們的視野中,短短 1 年在 GitHub 上就收集了 20000+ star, 成為一個(gè)不折不扣的明星項(xiàng)目。

這個(gè)項(xiàng)目是由塞巴斯蒂安·拉米雷斯(Sebastian Ram írez)創(chuàng)建的,他在實(shí)現(xiàn)一個(gè)機(jī)器學(xué)習(xí)項(xiàng)目的時(shí)候創(chuàng)建了這個(gè)框架,并且優(yōu)化至今。拉米雷斯留著達(dá)利那樣的胡子,看起來(lái)像一個(gè)藝術(shù)家。

這個(gè)框架有什么高級(jí)特性讓他在這么短時(shí)間內(nèi)可以追趕 django 和 flask 呢?
FastAPI 的使用方法和設(shè)計(jì)參考了幾十個(gè) python 明星項(xiàng)目,博采眾長(zhǎng),吸收各家精華;
FastAPI 和 Flask 一樣簡(jiǎn)約
FastAPI 非常新,并且基于 python3.6 的類(lèi)型聲明系統(tǒng)。
自動(dòng)生成文檔
類(lèi)型聲明和數(shù)據(jù)檢驗(yàn)
內(nèi)置身份認(rèn)證
性能強(qiáng)
原生支持異步
強(qiáng)大的依賴(lài)注入系統(tǒng)
GraphQL 和 WebSocket 支持
自動(dòng)文檔

FastAPI 內(nèi)置 2 種文檔:swaggerui 和 Redoc,?當(dāng)你編寫(xiě)好接口以后,可以直接查看文檔,甚至可以進(jìn)行簡(jiǎn)單的測(cè)試。這些都是由 FastAPI 自動(dòng)打包的。允許您將更多精力放在代碼上,而不是設(shè)置工具。

類(lèi)型申明

一直以來(lái),python 的類(lèi)型傳遞都是被詬病的,在 python3.6 以后,類(lèi)型聲明已經(jīng)比較完善,而 Pydantic 這個(gè)庫(kù)基于 python 的標(biāo)準(zhǔn)語(yǔ)法進(jìn)行類(lèi)型檢查。FastAPI 集成了 pydantic 這個(gè)優(yōu)秀的庫(kù)進(jìn)行數(shù)據(jù)檢驗(yàn), 讓你用更少的代碼方便的進(jìn)行數(shù)據(jù)檢驗(yàn)。
而且加了類(lèi)型聲明以后,你能更方便的在 pycharm 這樣的工具當(dāng)中得到代碼智能提示,這點(diǎn)比 Flask 好太多了。

數(shù)據(jù)檢驗(yàn)

由于集成了 Pydantic。您可以驗(yàn)證任意的 python 標(biāo)準(zhǔn)類(lèi)型,也可以驗(yàn)證其他的數(shù)據(jù),比如:
JSON 對(duì)象(dict)
JSON 數(shù)組(list)
具有最小和最大長(zhǎng)度的字符串(str)
帶最小值和最大值的 float
統(tǒng)一資源定位地址(URI)
電子郵件(Email)
UUID
身份認(rèn)證

這是任何 API 的關(guān)鍵部分,現(xiàn)代社會(huì)幾乎任何的產(chǎn)品和服務(wù)都需要你登錄。FastAPI 把標(biāo)準(zhǔn)的身份認(rèn)證集成到了框架內(nèi)部。它提供
HTTP Basic
OAuth2 (JWT tokens)
放在 header, 查詢(xún)字符串或者 cookie 中的 key
性能

這恐怕是 FastAPI 最值得炫耀的地方。它太快了!不僅編碼速度快,而且處理請(qǐng)求的速度也非???!你可以在?techempower?(鏈接地址:http://r6d.cn/5yLj)查詢(xún)到最新的性能表現(xiàn)對(duì)弈。

天生支持異步

使用 FastAPI 你可以寫(xiě)同步代碼,但是如果你需要一些異步操作,你可以非常輕松的完成切換。最簡(jiǎn)單的,你可以直接在函數(shù)前面加一個(gè) async, 這個(gè)在 Flask 當(dāng)中是不能做的, 在 django 中也并不容易。

強(qiáng)大的依賴(lài)注冊(cè)系統(tǒng)(Dependcy Injection)

FastAPI 的依賴(lài)注入非常炫酷,他允許你通過(guò)非常簡(jiǎn)單的方式去解決一些依賴(lài)問(wèn)題,不需要多余的配置。比如如果你想在處理請(qǐng)求時(shí)操作數(shù)據(jù)庫(kù),你可以把數(shù)據(jù)庫(kù)操作注入:

GraphQL和WebSocket支持

GraphQL 在使用復(fù)雜的數(shù)據(jù)模型時(shí)比 REST 有用多了。當(dāng)前端的微小變化需要后端的查詢(xún)數(shù)據(jù)時(shí)表象非常亮眼。Flask 和 Django 可以安裝插件處理,在 FastAPI 中,這是經(jīng)過(guò)集成的。FastAPI 同樣支持 WebSocket。
總結(jié)

FastAPI?是你在進(jìn)行 python Web 開(kāi)發(fā)的時(shí)候不容錯(cuò)過(guò)的一個(gè)框架。以前的 Web 框架設(shè)計(jì)之初都是開(kāi)發(fā)網(wǎng)站的,所以通常帶有 HTML 模板渲染,而FastAPI 專(zhuān)心給你提供 API, 如果你想讓他返回 HTML, 也可以輕松引入模板引擎。
測(cè)試開(kāi)發(fā)相關(guān)視頻資料,私信我哈~

說(shuō)明:本文為檸檬班雨澤老師原創(chuàng),轉(zhuǎn)載需注明出處!