在 Flask 中,可以通過 request
對象來獲取客戶端通過 GET 或 POST 方法發送的參數。以下是如何在 Flask 中接收 GET 和 POST 參數的詳細說明:
1. 接收 GET 參數
GET 請求的參數通常通過 URL 的查詢字符串傳遞。例如,對于 URL http://example.com/?name=Kimi&age=25
,可以通過 request.args
獲取這些參數。
from flask import Flask, requestapp = Flask(__name__)@app.route('/get_example')
def get_example():# 獲取 GET 參數name = request.args.get('name', default='Guest') # 默認值為 'Guest'age = request.args.get('age', default=0, type=int) # 默認值為 0,且轉換為整數return f"Hello, {name}! Your age is {age}."if __name__ == '__main__':app.run(debug=True)
request.args
是一個類似字典的對象,可以通過.get()
方法獲取參數值。如果參數不存在,可以通過
default
參數指定默認值。可以通過
type
參數指定參數的類型(如int
、float
等)。
2. 接收 POST 參數
POST 請求的參數可以通過表單數據或 JSON 數據傳遞。
接收表單數據
如果客戶端通過表單發送數據(Content-Type: application/x-www-form-urlencoded
或 multipart/form-data
),可以通過 request.form
獲取參數。
from flask import Flask, requestapp = Flask(__name__)@app.route('/post_example', methods=['POST'])
def post_example():# 獲取 POST 表單參數name = request.form.get('name', default='Guest') # 默認值為 'Guest'age = request.form.get('age', default=0, type=int) # 默認值為 0,且轉換為整數return f"Hello, {name}! Your age is {age}."if __name__ == '__main__':app.run(debug=True)
?
接收 JSON 數據
如果客戶端發送 JSON 數據(Content-Type: application/json
),可以通過 request.json
或 request.get_json()
獲取參數。
?
from flask import Flask, requestapp = Flask(__name__)@app.route('/json_example', methods=['POST'])
def json_example():# 獲取 POST JSON 數據data = request.get_json() # 或 request.jsonname = data.get('name', 'Guest') # 默認值為 'Guest'age = data.get('age', 0) # 默認值為 0return f"Hello, {name}! Your age is {age}."if __name__ == '__main__':app.run(debug=True)
3. 同時接收 GET 和 POST 參數
如果需要同時支持 GET 和 POST 方法,可以通過 request.args
和 request.form
分別獲取對應的參數。
from flask import Flask, requestapp = Flask(__name__)@app.route('/example', methods=['GET', 'POST'])
def example():if request.method == 'GET':name = request.args.get('name', default='Guest')age = request.args.get('age', default=0, type=int)elif request.method == 'POST':name = request.form.get('name', default='Guest')age = request.form.get('age', default=0, type=int)return f"Hello, {name}! Your age is {age}."if __name__ == '__main__':app.run(debug=True)
?
4. 通用方法
如果需要同時支持表單數據和 JSON 數據,可以使用 request.values
,它會合并 request.args
和 request.form
。
from flask import Flask, requestapp = Flask(__name__)@app.route('/example', methods=['GET', 'POST'])
def example():name = request.values.get('name', default='Guest')age = request.values.get('age', default=0, type=int)return f"Hello, {name}! Your age is {age}."if __name__ == '__main__':app.run(debug=True)
總結
GET 參數:通過
request.args
獲取。POST 表單參數:通過
request.form
獲取。POST JSON 參數:通過
request.json
或request.get_json()
獲取。通用方法:使用
request.values
合并 GET 和 POST 參數。
根據實際需求選擇合適的方式即可。