Flask request 對象詳情
前言:
一個完整的 HTTP
請求,包括客戶端向服務端發送的 Request
請求和服務器端發送的 Response
響應。為瞭能方便的訪問獲取請求及響應報文信息,Flask
框架提供瞭一些內建對象,下面就來說一下 Flask 針對請求提供的內建對象request
。
1、request請求對象
request
請求對象封裝瞭從客戶端發來的請求報文信息,我們能從request
對象上獲取請求報文中的所有數據。 其大部分功能是由依賴包Werkzeug
完成的,Flask
做瞭一些特定功能的封裝,形成瞭request
請求對象。
1.1request請求對象的使用
導入flask包中的request對象,就可以直接在請求函數中使用該對象瞭。
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對象中的method
變量可以獲取當前請求的方法,即GET、POST、PUT、DELETE等;form變量獲取POST請求form-data表單中的數據,本質是一個字典,如果提交的表單中沒有user_name
,則會返回 400 Bad Request
的錯誤,當然也可以使用異常捕獲機制處理。request.args.get()
方法獲取的是GET請求的url中的參數(問號?之後的部分),第一個參數指定獲取的 url 參數的 key,第二個參數指定默認值,當 key 不存在時,則返回默認值。
如下:
GET請求
POST請求
除此之外,請求報文中的其他信息都可以通過 request 對象提供的屬性和方法獲取,常用的部分如下:
url
:請求的url
args:Werkzeug
的ImmutableMultiDict
對象,存儲解析後的查詢字符串,可通過字典方式獲取鍵值blueprint
:當前藍本的名稱cookies
:一個包含所有隨請求提交的cookies
的字典data
:包含字符串形式的請求數據endpoint
:於當前請求相匹配的端點值files:Werkzeug
的MultiDict
對象,包含所有上傳文件form:Werkzeug
的ImmutableMultiDict
對象,包含解析後的表單數據values:Werkzeug
的CombinedMultiDict
對象,結合瞭args
和form
屬性的值get_data(cache=True,as_text=False,parse_from_data=False):
獲取請求中的數據,默認讀取為字節字符串(bytestring),as_text為True則返回解碼後的unicode
字符串get_json(self,force=False,silent=False,cache=True)
:作為 json 解析並返回數據,如果MIME
類型不是 json,返回 None(除非 force 設為 True);解析出錯則拋出Werkzeug提供的BadRequest
異常(如果未開啟調試模式,則返回400錯誤響應),如果 silent 設為 True 則返回 None;cache 設置是否緩存解析後的 json 數據headers:Werkzeug
的EnvironHeaders
對象,包含請求的頭部字段json
:包含解析後的 json 數據,內部調用 get_json(),可通過字典的方式獲取鍵值method
:請求的 HTTP 方法referrer
:請求發起的源 url,即referer
scheme
:請求的URL模式(http 或 https)user_agent
:用戶代理(User Agent),包含瞭用戶的客戶端類型,操作系統類型等信息
到此這篇關於 Flask request
對象詳情的文章就介紹到這瞭,更多相關 Flask request 對象內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- flask post獲取前端請求參數的三種方式總結
- Flask 入門系列 Cookie與session的介紹
- 使用flask如何獲取post請求參數
- Python Flask 請求數據獲取響應詳解
- Python3+Flask安裝使用教程詳解