在 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 参数。
根据实际需求选择合适的方式即可。