Python|介紹一下個人新夥伴fastapi(一)

在平常運維工做中,常常性的會創造出一些快速腳本,用來提升工做效率.一直在想有沒有可能寫一個Web工具,把這些經常使用的東西收集起來,用的時候直接點擊拿到結果.這樣即方便又能避免輸錯還不用登錄服務器顯得更有效率.
直到我遇到了fastapi忽然眼前一亮,不就是這貨嗎?讓我等的好苦!java

fastapi是什麼

FastAPI 是一個用於構建 API 的現代、快速(高性能)的 web 框架,使用 Python 3.6+ 並基於標準的 Python 類型提示。node

關鍵特性:golang

  • 快速:可與 NodeJS 和 Go 比肩的極高性能(歸功於 Starlette 和 Pydantic)。最快的 Python web 框架之一。web

  • 高效編碼:提升功能開發速度約 200% 至 300%。*json

  • 更少 bug:減小約 40% 的人爲(開發者)致使錯誤。*
  • 智能:極佳的編輯器支持。到處皆可自動補全,減小調試時間。
  • 簡單:設計的易於使用和學習,閱讀文檔的時間更短。
  • 簡短:使代碼重複最小化。經過不一樣的參數聲明實現豐富功能。bug 更少。
  • 健壯:生產可用級別的代碼。還有自動生成的交互式文檔。
  • 標準化:基於(並徹底兼容)API 的相關開放標準:OpenAPI (之前被稱爲 Swagger) 和 JSON Schema。

以上摘自官方文檔
https://fastapi.tiangolo.com/zh/flask

我本身的一些感覺

自然集成swagger,有了這個靠山,天然有了如下幾大能力api

  • 界面有了
    命令行很酷,鍵指如飛也很讓人羨慕,但也僅而已了,真正牛掰的能力是複製,一旦你自身擁有了一項能力,你的團隊同時俱備的這項能力,並且同你我的操做沒有差異.這應該就是Web一直長盛不衰的本質所在.數組

  • 入參出參一目瞭然
    什麼類型,是否必須,很直觀的顯示出來.之前作項目,寫完實現,寫註釋,還要寫接口文檔給調用方,實在是費時費力,時間久了本身也不記得了.如今好了文檔自動生成不說,忘記了直接打開看
  • 界面調試
    你很容易在瀏覽器裏,直接調試你正在編寫的接口.之前不以爲的什麼,GET接口直接瀏覽器打開就行了,POST接口本身用curl或者postman造一下就行.如今好了直接內置這些技能,還給你自帶一個curl的命令,方便你在命令行測試.固然輸出也一目瞭然.
  • 開發效率
    這個要從幾方面來講瀏覽器

    • 自動重啓
      這個勉強算是吧,確切的說是uvicorn的能力,加了--reload參數,監控文件變化,自動重啓
    • 參數校驗
      明肯定義參數和類型,少參數和類型不對的狀況,fastapi幫你處理,這無形中是巨大的時間成本.
    • 返回結果
      默認json格式返回,之前處理完的結果,別管是數組仍是字典都要json.dump一下.如今直接return好了.
  • 兼容flask
    確切的說不能算兼容,只能說語法類型,超級容易轉換,只是獲取參數的形式變一變,校驗參數的部分拿掉,中間邏輯處理不變,返回結果時拿掉json轉換
    舉例
    轉換前:
    Python|介紹一下個人新夥伴fastapi(一)
    轉換後:
    Python|介紹一下個人新夥伴fastapi(一)其實早就知道swagger這一神奇存在,甚至在我用上了fastapi還專門搜索了一下swagger在nodejs,golang,java等的集成方式,發現都是以插件的形式存在,須要很多的定製才能work,固然flask也能夠集成swagger,只是有自然集成的存在實在找不出繼續使用flask的理由一口氣,泛泛的紙上談兵說了這麼多,後面還會有一些相應的主題跟進,好比寫一個比較全的例子,入門更容易一些,還有一些相對高級的諸如安全相關的東西.
相關文章
相關標籤/搜索