大家好,這里是
米洛,一個(gè)想和大家一起分享測(cè)試開(kāi)發(fā)相關(guān)的技術(shù),面試經(jīng)驗(yàn)和成長(zhǎng)經(jīng)歷的博主!
歡迎大家關(guān)注我的公眾號(hào): 測(cè)試開(kāi)發(fā)坑貨。
FastApi簡(jiǎn)介
官網(wǎng)地址: https://fastapi.tiangolo.com/zh/
FastApi是最近(具體啥時(shí)候開(kāi)始我也不知道)很火的一個(gè)Python web框架,其實(shí)我對(duì)他了解也不夠多,那咱們來(lái)看看他的官方文檔吧。

基本上可以瞅到幾個(gè)關(guān)鍵字,一馬當(dāng)先的就是快。那么她有多快呢,這邊寫(xiě)到了Go,我本身呢是個(gè)go語(yǔ)言使用者,身上隨身帶個(gè)if err != nil,很合邏輯吧!
其他的咱們都可以不用看,那都是虛的,其實(shí)我就想知道這玩意有多快。是不是真的和他標(biāo)榜的那樣,和go肩并肩。
試水
所以我開(kāi)始了自己的一次嘗試,昨天晚上我特意搭建了一個(gè)FastApi服務(wù),跑了跑。雖然我本身沒(méi)用過(guò)django,但是大概也知道django的全面,各個(gè)組件應(yīng)有盡有,簡(jiǎn)直就是精裝修,拎包入住即可。那FastApi呢?測(cè)試開(kāi)發(fā)干貨群的大佬們形容他是毛坯中的毛坯,意思是啥組件都需要自己寫(xiě),核心庫(kù)比不上Flask多,更別說(shuō)django了,django,yyds!
但是我本身對(duì)于新鮮事物還是很好奇的,所以就忍不住體驗(yàn)了一把。如果這是一篇測(cè)評(píng)文章的話(huà),那我的測(cè)評(píng)進(jìn)度可能才到5%,不過(guò)就算是這樣,我也覺(jué)得FastApi應(yīng)當(dāng)是一款不錯(cuò)的web框架。
愛(ài)之初體驗(yàn)
- 安裝fastapi
pip install fastapi
- 安裝uvicorn
pip install uvicorn
- 新建一個(gè)main.py
from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: int
description: Optional[str] = None
price: float
tax: Optional[float] = None
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
return item
整體風(fēng)格有點(diǎn)像Flask,所以上手比較快。這個(gè)可能也是我想試試的原因之一。上面的class定義了接受的參數(shù),以往我們用flask接受參數(shù)的話(huà)一般用request.get_data()或者get_json(),其實(shí)我寫(xiě)慣了go之后還是很不習(xí)慣的,因?yàn)槲疫€是認(rèn)為對(duì)象比字典好使,而且這個(gè)item對(duì)象實(shí)現(xiàn)了dict()方法,也可以隨時(shí)轉(zhuǎn)為dict。說(shuō)句實(shí)話(huà),這點(diǎn)確實(shí)方便。

- 在main.py同級(jí)目錄啟動(dòng)服務(wù)
uvicorn main:app --reload
--reload參數(shù)指的是熱更新部署,意思是可以在代碼發(fā)生變動(dòng)的時(shí)候自動(dòng)重啟服務(wù),使得代碼生效。
方便還是挺方便的。
看看控制臺(tái)

長(zhǎng)的是喜歡的樣子!假設(shè)我更新下代碼:

可以看到服務(wù)自動(dòng)reload了。這點(diǎn)還挺方便的~
計(jì)劃
計(jì)劃是把現(xiàn)有的Flask改為FastApi,趁著項(xiàng)目還小,行動(dòng)起來(lái)。有一起學(xué)習(xí)的小伙伴們,麻煩加我一下!我們一起學(xué)!如果不想學(xué)的就幫我點(diǎn)個(gè)贊吧,希望你不要不識(shí)抬舉!(狗頭保命)