FastAPI簡單操作

FastAPI
首先講一下基礎(chǔ)操作弧可,然后在介紹這些操作的意義

1. 創(chuàng)建

假設(shè)你創(chuàng)建了一個main.py的函數(shù),并保存

from fastapi import FastAPI
app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}
uvicorn main:app --reload

然后你可以在cmd中使用啟動這個程序, 然后會顯示一下信息:

localhost@asdil:/tmp/study$ uvicorn mian:app --reload
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [2414126] using statreload
INFO:     Started server process [2414128]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

接下來你在瀏覽器中打開http://127.0.0.1:8000就會顯示一個最基礎(chǔ)的get頁面


基礎(chǔ)get頁面

如果不是在本地,而是使用遠程服務(wù)器,那么你的啟動命令變成:

uvicorn main:app --host '遠程機器ip' --port 端口 --reload
比如:
uvicorn main:app --host '192.168.30.17' --port 8000 --reload

uvicorn參數(shù)解釋:
main: 指定主程序文件main.py文件, 如果main.py文件改成test.py 則命令也需要改為uvicorn test:app
app:在main.py中使用app = FastAPI()創(chuàng)建的對象
--host:遠程主機ip,如果是本地則可以不要這個參數(shù)
--host:端口號
--reload:在修改源代碼后程序會自動重新加載不用退出重新啟動

注意:

在使用 uvicorn main:app --reload啟動后,如果想shutdown請使用ctrl+c, 而不是ctrl+z哲鸳,后者其實是退出前臺,如果ctrl+z后你想在啟動會報端口被占用

2. get

這個是最常見的請求形式
(1) url參數(shù)
修改main.py

from fastapi import FastAPI
app = FastAPI()
# url參數(shù)定義在這個修飾器里面
@app.get("/{url}")
def read_root():
    return {"Hello": "World"}

我們在@app.get中定義了url參數(shù)盔憨,那么我們下次get請求時就不能直接輸入http://127.0.0.1:8000而是http://127.0.0.1:8000/xxxx(xxxx表示任意字符串)

(2) param參數(shù)
修改main.py

from fastapi import FastAPI
app = FastAPI()
# url參數(shù)可以和param重合
@app.get("/{url}")
def read_root(url: str, parms_1: str, parms_2: str=None):
    return {'url地址是: ': url, "parms_1參數(shù)是 ": parms_1, "parms_2參數(shù)是 ": parms_2}

這是輸入http://192.168.30.17:8000/anywords?parms_1=abc&parms_2=def就可以了徙菠,這里我使用的是遠程服務(wù)器,因此我指定了ip和端口

parm參數(shù)

說明:
1.如果有parm參數(shù)則在地址后面加 ?,多個parm參數(shù)使用 & 連接
2.return中單引號和雙引號沒有區(qū)別
3.從上面可以看出url參數(shù)可以和parm參數(shù)合一郁岩,這是第一個url參數(shù)就不需要?url=婿奔,而是直接跟在端口80000/后面

3. post

post方法參數(shù)不是直接接在url后面,安全性會好一些
使用post時需要繼承BaseModel這個類
(1)body參數(shù)

from fastapi import FastAPI
from pydantic import BaseModel    #fastapi的一個依賴,需要從pydantic中引入
app = FastAPI()
class Args(BaseModel):    #繼承BaseModel
    data_str: str    #定義一個字符串型參數(shù)
    data_int: int    #定義一個整形參數(shù)
    data_list: list  #定義一個列表
        
@app.post("/test_post")
async def postEchoApi(args:Args):    #設(shè)置剛才定義的參數(shù)
    dict_args = args.dict() # 也可以轉(zhuǎn)化為字典
    return {"str data":args.data_str, 
            'int data': args.data_int, 
            'list data':args.data_list, 
            'args 數(shù)據(jù)類型': str(type(args))}
postman

測試post的時候就用postman就可以了问慎,注意是在Body選擇Raw在選擇Json形式傳入?yún)?shù)

3. 在服務(wù)器部署fastapi

第一種使用方式

uvicorn main:app --host '0.0.0.0' --port 8000 --reload --workers 1

第二種使用方式(推薦)
Gunicorn是一個成熟的萍摊、功能齊全的服務(wù)器和流程管理器。
Uvicorn包含一個Gunicorn worker類如叼,允許您運行ASGI應(yīng)用程序冰木,具有Uvicorn的所有性能優(yōu)勢,同時還為您提供了Gunicorn的全功能流程管理。
這允許您動態(tài)地增加或減少工作進程的數(shù)量踊沸,正常地重新啟動工作進程歇终,或者在不停機的情況下執(zhí)行服務(wù)器升級。
對于生產(chǎn)部署逼龟,我們建議將gunicorn與uvicorn worker類一起使用评凝。

gunicorn main:app -b 0.0.0.0:8000 -w 1 -k uvicorn.workers.UvicornWorker

===============================下次再寫===========================

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市审轮,隨后出現(xiàn)的幾起案子肥哎,更是在濱河造成了極大的恐慌,老刑警劉巖疾渣,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異崖飘,居然都是意外死亡榴捡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門朱浴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吊圾,“玉大人,你說我怎么就攤上這事翰蠢∠钇梗” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵梁沧,是天一觀的道長檀何。 經(jīng)常有香客問我,道長廷支,這世上最難降的妖魔是什么频鉴? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮恋拍,結(jié)果婚禮上垛孔,老公的妹妹穿的比我還像新娘。我一直安慰自己施敢,他們只是感情好周荐,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著僵娃,像睡著了一般概作。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上悯许,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天仆嗦,我揣著相機與錄音,去河邊找鬼先壕。 笑死瘩扼,一個胖子當著我的面吹牛谆甜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播集绰,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼规辱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了栽燕?” 一聲冷哼從身側(cè)響起罕袋,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎碍岔,沒想到半個月后浴讯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蔼啦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年榆纽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捏肢。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡奈籽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鸵赫,到底是詐尸還是另有隱情衣屏,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布辩棒,位于F島的核電站狼忱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏盗温。R本人自食惡果不足惜藕赞,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卖局。 院中可真熱鬧斧蜕,春花似錦、人聲如沸砚偶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽染坯。三九已至均芽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間单鹿,已是汗流浹背掀宋。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人劲妙。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓湃鹊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親镣奋。 傳聞我的和親對象是個殘疾皇子币呵,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348