




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第使用flask如何獲取post請(qǐng)求參數(shù)目錄前言概述1.application/jsonhttp請(qǐng)求報(bào)文格式如下:使用curlpostman請(qǐng)求flask如何獲取請(qǐng)求體呢2.application/x-www-form-urlencoded使用curl請(qǐng)求flask如何獲取請(qǐng)求體呢3.multipart/form-datahttp請(qǐng)求報(bào)文使用curl請(qǐng)求postman請(qǐng)求flask如何獲取請(qǐng)求體呢4.text/plainhttp請(qǐng)求報(bào)文如下使用curl請(qǐng)求postman請(qǐng)求flask如何獲取請(qǐng)求體呢總結(jié)參考文檔
前言
今天我們繼續(xù)來(lái)說(shuō)一下,使用flaskwebapplication,如何獲取post請(qǐng)求參數(shù)的。
概述
對(duì)于post請(qǐng)求有幾種方式。Content-Type實(shí)體頭部用于指示資源的MIME類型mediatype。
content-type是http請(qǐng)求頭的字段。作為請(qǐng)求頭時(shí)(post或者put),客戶端告訴服務(wù)器實(shí)際發(fā)送的數(shù)據(jù)類型。
對(duì)于不同的content-type發(fā)送的數(shù)據(jù)不太一樣,對(duì)于服務(wù)器端,需要如何獲取數(shù)據(jù),以及正確解析的方法也是不一樣的。
下面列出常用的幾種Content-Type
application/jsonapplication/x-www-form-urlencodedmultipart/form-datatext/plaintext/xmltext/html
1.application/json
Content-Type以這種方式的api,目前來(lái)說(shuō)還是比較多的,現(xiàn)在主流前后端交互的api,使用application/json這種方式傳輸數(shù)據(jù)非常常見(jiàn)。主要得意于json的發(fā)展,以及前后端完善的庫(kù)支持,使得這種方式比較常見(jiàn)。
這里以login登錄接口為例
http請(qǐng)求報(bào)文格式如下:
POST/loginHTTP/1.1
Host::5000
Content-Type:application/json
Content-Length:59
"username":"frank",
"password":"jsdofjdsofjsdo"
}
使用curl
curl--location--requestPOST':5000/login'\
--header'Content-Type:application/json'\
--data-raw'{
"username":"frank",
"password":"jsdofjdsofjsdo"
postman請(qǐng)求
flask如何獲取請(qǐng)求體呢
對(duì)于這種請(qǐng)求方式,flask如何獲取請(qǐng)求的body的內(nèi)容呢?
#main.py
fromflaskimportFlask
fromflaskimportrequest
fromflaskimportjsonify
#pipinstallpysimple-log
fromsimplelogimportlogger
app=Flask(__name__)
@app.route('/login',methods=['POST'])
deflogin():
ifrequest.method=='POST':
#這樣獲取就可以了
json_data=request.json
(f"json_data:{json_data}")
returnjsonify(json_data)
if__name__=='__main__':
app.run(host='',port=5000,debug=True)
我們直接可以通過(guò),flask提供的request對(duì)象獲取參數(shù)。request.json通過(guò)這個(gè)屬性就可以獲取到requestbody的內(nèi)容了。是不是很方便呢。
2.application/x-www-form-urlencoded
這種方式是瀏覽器原生form表單默認(rèn)的提交方式
http請(qǐng)求報(bào)文格式
POST/loginHTTP/1.1
Host::5000
Content-Type:application/x-www-form-urlencoded
Content-Length:38
username=frankpassword=jsdofjdsofjsdo
使用curl請(qǐng)求
curl--location--requestPOST':5000/login'\
--header'Content-Type:application/x-www-form-urlencoded'\
--data-urlencode'username=frank'\
--data-urlencode'password=jsdofjdsofjsdo'
flask如何獲取請(qǐng)求體呢
對(duì)于這中content-type我們可以使用request.form返回一個(gè)不可變的字典類型。然后就可以獲取requestbody啦。
#省略...
@app.route('/login',methods=['POST'])
deflogin():
ifrequest.method=='POST':
json_data=request.form
(f"json_data:{json_data}")
returnjsonify(json_data)
3.multipart/form-data
這又是一個(gè)常見(jiàn)的POST數(shù)據(jù)提交的方式。我們使用表單上傳文件時(shí),必須讓form表單的enctype等于multipart/form-data。直接來(lái)看一個(gè)請(qǐng)求示例:
這里我只是演示一下,對(duì)應(yīng)http報(bào)文
http請(qǐng)求報(bào)文
POST/loginHTTP/1.1
Host::5000
Content-Type:multipart/form-data;boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Length:239
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition:form-data;name="username"
frank
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition:form-data;name="password"
111111sfsfsafsafas==
----WebKitFormBoundary7MA4YWxkTrZu0gW
使用curl請(qǐng)求
curl--location--requestPOST':5000/login'\
--form'username="frank"'\
--form'password="111111sfsfsafsafas=="'
postman請(qǐng)求
flask如何獲取請(qǐng)求體呢
對(duì)于這種方式還是可以通過(guò)request.from來(lái)獲取參數(shù)
#...省略
@app.route('/login',methods=['POST'])
deflogin():
ifrequest.method=='POST':
json_data=request.form
(f"json_data:{json_data}")
returnjsonify(json_data)
4.text/plain
用純文本發(fā)送數(shù)據(jù)
http請(qǐng)求報(bào)文如下
POST/loginHTTP/1.1
Host::5000
Content-Type:text/plain
Content-Length:59
"username":"frank",
"password":"jsdofjdsofjsdo"
使用curl請(qǐng)求
curl--location--requestPOST':5000/login'\
--header'Content-Type:text/plain'\
--data-raw'{
"username":"frank",
"password":"jsdofjdsofjsdo"
postman請(qǐng)求
flask如何獲取請(qǐng)求體呢
flask如何正常接收數(shù)據(jù)呢?原生的請(qǐng)求數(shù)據(jù)會(huì)放在request.data里面,類型是bytes,需要轉(zhuǎn)成字符串,然后通過(guò)json模塊轉(zhuǎn)成字典。
importjson
fromflaskimportFlask
fromflaskimportrequest
fromflaskimportjsonify
#pipinstallpysimple-log
fromsimplelogimportlogger
app=Flask(__name__)
@app.route('/login',methods=['POST'])
deflogin():
ifrequest.method=='POST':
#bytes類型
raw_data=request.data
(f'raw_data:{raw_data}')
json_data=json.loads(raw_data.decode())
(f"json_data:{json_data},type:{type(json_data)}")
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鄉(xiāng)鎮(zhèn)衛(wèi)生院老年護(hù)理專項(xiàng)工作計(jì)劃
- 高??蒲许?xiàng)目財(cái)務(wù)專員的職責(zé)
- 醫(yī)藥公司2025年發(fā)展戰(zhàn)略及年度工作計(jì)劃
- 商業(yè)綜合體物業(yè)客戶關(guān)系管理承包協(xié)議
- 海外購(gòu)物糾紛解決與商品真?zhèn)悟?yàn)證服務(wù)協(xié)議
- 3D打印技術(shù)與個(gè)性化產(chǎn)品設(shè)計(jì)計(jì)劃
- 2025年十溴二苯乙烷項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模板
- 2025年聚硫橡膠項(xiàng)目提案報(bào)告模板
- 2025年骨科急救護(hù)理應(yīng)急預(yù)案
- 四年級(jí)閱讀理解專項(xiàng)訓(xùn)練計(jì)劃
- 華北電力大學(xué)ppt模板
- 清朝治理新疆地區(qū)系統(tǒng)性治理課件(16ppt+視頻)2022年新疆地方史讀本(中學(xué)版)
- 旅游資源分類調(diào)查評(píng)價(jià)表 2017版
- 叉車日常維護(hù)保養(yǎng)檢查記錄表
- 《我的夢(mèng)-中國(guó)夢(mèng)》主題班會(huì)課件
- 超聲波加工以及機(jī)床設(shè)計(jì)機(jī)械設(shè)計(jì)論文
- 義齒加工成本
- 綜合教學(xué)樓建筑結(jié)構(gòu)設(shè)計(jì)
- 蘇教版三年級(jí)下冊(cè)科學(xué)實(shí)驗(yàn)題
- 員工分紅合作協(xié)議書(shū)54559
- 臨時(shí)用電工作危害分析(JHA)記錄表
評(píng)論
0/150
提交評(píng)論