在平常運維工做中,常常性的會創造出一些快速腳本,用來提升工做效率.一直在想有沒有可能寫一個Web工具,把這些經常使用的東西收集起來,用的時候直接點擊拿到結果.這樣即方便又能避免輸錯還不用登錄服務器顯得更有效率.
直到我遇到了fastapi忽然眼前一亮,不就是這貨嗎?讓我等的好苦!java
fastapi是什麼
FastAPI 是一個用於構建 API 的現代、快速(高性能)的 web 框架,使用 Python 3.6+ 並基於標準的 Python 類型提示。node
關鍵特性:golang
以上摘自官方文檔
https://fastapi.tiangolo.com/zh/flask
我本身的一些感覺
自然集成swagger,有了這個靠山,天然有了如下幾大能力api
-
界面有了
命令行很酷,鍵指如飛也很讓人羨慕,但也僅而已了,真正牛掰的能力是複製,一旦你自身擁有了一項能力,你的團隊同時俱備的這項能力,並且同你我的操做沒有差異.這應該就是Web一直長盛不衰的本質所在.數組
- 入參出參一目瞭然
什麼類型,是否必須,很直觀的顯示出來.之前作項目,寫完實現,寫註釋,還要寫接口文檔給調用方,實在是費時費力,時間久了本身也不記得了.如今好了文檔自動生成不說,忘記了直接打開看
- 界面調試
你很容易在瀏覽器裏,直接調試你正在編寫的接口.之前不以爲的什麼,GET接口直接瀏覽器打開就行了,POST接口本身用curl或者postman造一下就行.如今好了直接內置這些技能,還給你自帶一個curl的命令,方便你在命令行測試.固然輸出也一目瞭然.
-
開發效率
這個要從幾方面來講瀏覽器
- 自動重啓
這個勉強算是吧,確切的說是uvicorn的能力,加了--reload參數,監控文件變化,自動重啓
- 參數校驗
明肯定義參數和類型,少參數和類型不對的狀況,fastapi幫你處理,這無形中是巨大的時間成本.
- 返回結果
默認json格式返回,之前處理完的結果,別管是數組仍是字典都要json.dump一下.如今直接return好了.
- 兼容flask
確切的說不能算兼容,只能說語法類型,超級容易轉換,只是獲取參數的形式變一變,校驗參數的部分拿掉,中間邏輯處理不變,返回結果時拿掉json轉換
舉例
轉換前:
轉換後:
其實早就知道swagger這一神奇存在,甚至在我用上了fastapi還專門搜索了一下swagger在nodejs,golang,java等的集成方式,發現都是以插件的形式存在,須要很多的定製才能work,固然flask也能夠集成swagger,只是有自然集成的存在實在找不出繼續使用flask的理由一口氣,泛泛的紙上談兵說了這麼多,後面還會有一些相應的主題跟進,好比寫一個比較全的例子,入門更容易一些,還有一些相對高級的諸如安全相關的東西.