在Django框架開發中,request對象就是用來處理GET\POST請求的關鍵對象,而Flask框架也是同樣的。json
下面來看看request對象的經常使用方法。flask
request對象的導入:bash
from flask import request
複製代碼
Flask 框架中的 request 對象保存了一次HTTP請求的一切信息。那麼這個HTTP請求中可能會是GET\POST請求,以及還要考慮如何獲取各類請求體或者URL參數。app
而對應着這些參數的獲取或者GET/POST方法的區分,下面都有對應的經常使用方法來進行對應的處理。框架
經常使用的方法以下:函數
json
格式的請求數據,則是採用request.data
來獲取請求體的字符串。form
表單的請求體,那麼則能夠使用request.form
來獲取參數。url
參數,例如:url?param1=xx¶m2=xx
,那麼則能夠使用request.args
來獲取參數。GET\POST
請求方法,則能夠使用request.method
來進行判斷區分。request.files
來獲取上傳的文件信息。下面來看看示例方法。post
處理視圖函數以下:ui
from flask import Flask, current_app, redirect, url_for, request
import json
# 實例化app
app = Flask(import_name=__name__)
# 經過methods設置POST請求
@app.route('/json', methods=["POST"])
def json_request():
# 接收處理json數據請求
data = json.loads(request.data) # 將json字符串轉爲dict
user_name = data['user_name']
user_age = data['user_age']
return "user_name = %s, user_age = %s" % (user_name,user_age)
if __name__ == '__main__':
app.run(debug=True)
複製代碼
使用postman模擬請求以下:url
在flask中獲取這個form的請求參數示例以下:spa
from flask import Flask, current_app, redirect, url_for, request
# 實例化app
app = Flask(import_name=__name__)
# 經過methods設置POST請求
@app.route('/form', methods=["POST"])
def form_request():
# 接收post請求的form表單參數
user_name = request.form.get('user_name')
user_age = request.form.get('user_age')
return "user_name = %s, user_age = %s" % (user_name,user_age)
if __name__ == '__main__':
app.run(debug=True)
複製代碼
通常form表單的請求都是使用post請求,下面能夠使用postman來進行請求模擬,以下:
還有 form x-www-form-urlencoded 請求,以下:
上面form-data
是能夠包含文件類型的form表單,而x-www-form-urlencoded
只是單純 key - value
的數據。
而處理的業務代碼是跟上面的同樣的。
這種請求下能夠使用request.form.getlist()
來獲取同名多個參數,以下:
# 經過methods設置POST請求
@app.route('/form', methods=["POST"])
def form_request():
# 接收post請求的form表單參數
user_name = request.form.get('user_name')
user_age = request.form.get('user_age')
user_name_list = request.form.getlist('user_name')
print(user_name_list)
return "user_name = %s, user_age = %s, user_name_list = %s" % (user_name,user_age, user_name_list)
複製代碼
使用postman請求以下:
在對於url上的?user_name=libai&user_age=17
該類的參數,則是使用request.args
來獲取。 示例代碼以下:
# 經過methods設置GET請求
@app.route('/args', methods=["GET"])
def args_request():
# 接收處理GET數據請求
user_name = request.args.get('user_name')
user_age = request.args.get('user_age')
print("user_name = %s, user_age = %s" % (user_name,user_age))
return "user_name = %s, user_age = %s" % (user_name,user_age)
複製代碼
使用postman模擬GET請求以下:
from flask import Flask, request
# 實例化app
app = Flask(import_name=__name__)
# 經過methods設置POST請求
@app.route('/upload_file', methods=["POST"])
def upload_file():
# 接收post請求上傳的文件
file = request.files.get('file')
if file is None:
# 表示沒有發送文件
return "未上傳文件"
# 直接使用上傳的文件對象保存
file.save("file.jpg")
return "上傳文件成功!"
if __name__ == '__main__':
app.run(debug=True)
複製代碼
使用postman上傳文件以下: