[python][flask]flask接受get或者post参数
在 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.json name = data.get(\'name\', \'Guest\') # 默认值为 \'Guest\' age = data.get(\'age\', 0) # 默认值为 0 return 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 参数。
根据实际需求选择合适的方式即可。