前言:
一個(gè)完整的 HTTP
請(qǐng)求,包括客戶端向服務(wù)端發(fā)送的 Request
請(qǐng)求和服務(wù)器端發(fā)送的 Response
響應(yīng)。為了能方便的訪問獲取請(qǐng)求及響應(yīng)報(bào)文信息,Flask
框架提供了一些內(nèi)建對(duì)象,下面就來說一下 Flask 針對(duì)請(qǐng)求提供的內(nèi)建對(duì)象request
。
1、request請(qǐng)求對(duì)象
request
請(qǐng)求對(duì)象封裝了從客戶端發(fā)來的請(qǐng)求報(bào)文信息,我們能從request
對(duì)象上獲取請(qǐng)求報(bào)文中的所有數(shù)據(jù)。 其大部分功能是由依賴包Werkzeug
完成的,Flask
做了一些特定功能的封裝,形成了request
請(qǐng)求對(duì)象。
1.1request請(qǐng)求對(duì)象的使用
導(dǎo)入flask包中的request對(duì)象,就可以直接在請(qǐng)求函數(shù)中使用該對(duì)象了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
from flask import request @app .route( '/user' , methods = [ 'GET' , 'POST' ]) def user(): if request.method = = 'POST' : user_name = request.form[ 'user_name' ] return 'user :{} add success!' . format (user_name) else : user_id = request.args.get( 'user_id' , 0 ) return 'Hello user:{}!' . format (user_id) |
上述代碼中:request對(duì)象中的method
變量可以獲取當(dāng)前請(qǐng)求的方法,即GET、POST、PUT、DELETE等;form變量獲取POST請(qǐng)求form-data表單中的數(shù)據(jù),本質(zhì)是一個(gè)字典,如果提交的表單中沒有user_name
,則會(huì)返回 400 Bad Request
的錯(cuò)誤,當(dāng)然也可以使用異常捕獲機(jī)制處理。request.args.get()
方法獲取的是GET請(qǐng)求的url中的參數(shù)(問號(hào)?之后的部分),第一個(gè)參數(shù)指定獲取的 url 參數(shù)的 key,第二個(gè)參數(shù)指定默認(rèn)值,當(dāng) key 不存在時(shí),則返回默認(rèn)值。
如下:
GET請(qǐng)求
POST請(qǐng)求
除此之外,請(qǐng)求報(bào)文中的其他信息都可以通過 request 對(duì)象提供的屬性和方法獲取,常用的部分如下:
-
url
:請(qǐng)求的url
-
args:Werkzeug
的ImmutableMultiDict
對(duì)象,存儲(chǔ)解析后的查詢字符串,可通過字典方式獲取鍵值 -
blueprint
:當(dāng)前藍(lán)本的名稱 -
cookies
:一個(gè)包含所有隨請(qǐng)求提交的cookies
的字典 -
data
:包含字符串形式的請(qǐng)求數(shù)據(jù) -
endpoint
:于當(dāng)前請(qǐng)求相匹配的端點(diǎn)值 -
files:Werkzeug
的MultiDict
對(duì)象,包含所有上傳文件 -
form:Werkzeug
的ImmutableMultiDict
對(duì)象,包含解析后的表單數(shù)據(jù) -
values:Werkzeug
的CombinedMultiDict
對(duì)象,結(jié)合了args
和form
屬性的值 -
get_data(cache=True,as_text=False,parse_from_data=False):
獲取請(qǐng)求中的數(shù)據(jù),默認(rèn)讀取為字節(jié)字符串(bytestring),as_text為True則返回解碼后的unicode
字符串 -
get_json(self,force=False,silent=False,cache=True)
:作為 json 解析并返回?cái)?shù)據(jù),如果MIME
類型不是 json,返回 None(除非 force 設(shè)為 True);解析出錯(cuò)則拋出Werkzeug提供的BadRequest
異常(如果未開啟調(diào)試模式,則返回400錯(cuò)誤響應(yīng)),如果 silent 設(shè)為 True 則返回 None;cache 設(shè)置是否緩存解析后的 json 數(shù)據(jù) -
headers:Werkzeug
的EnvironHeaders
對(duì)象,包含請(qǐng)求的頭部字段 -
json
:包含解析后的 json 數(shù)據(jù),內(nèi)部調(diào)用 get_json(),可通過字典的方式獲取鍵值 -
method
:請(qǐng)求的 HTTP 方法 -
referrer
:請(qǐng)求發(fā)起的源 url,即referer
-
scheme
:請(qǐng)求的URL模式(http 或 https) -
user_agent
:用戶代理(User Agent),包含了用戶的客戶端類型,操作系統(tǒng)類型等信息
到此這篇關(guān)于 Flask request
對(duì)象詳情的文章就介紹到這了,更多相關(guān) Flask request 對(duì)象內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://juejin.cn/post/7030009163803525133