Get请求
- URL 传值 参照博客:
flask.request.args.get
获得参数值。
举例:前端请求URL为http://localhost:5000/log?datasetId=782973
@app.route("/log", methods=['get'])
def readLog():
datasetId = flask.request.args.get("datasetId")
global LOG_ROOT
_dir = os.path.join(LOG_ROOT, "log")
logName = str(datasetId) + ".log"
try:
filename = os.path.join(_dir, logName)
if os.path.exists(filename):
return send_file(filename, as_attachment=True, attachment_filename=logName)
else:
return "File Not Found!"
except Exception as e:
print(e)
Post请求
注意事项:
- Body 传值
flask.request.json
获得Json值 - Flask异步实现 参考博客
executor.submit
举例:
- 成功接收到Post消息的Response会直接发出。
do_task
函数,对接收到的参数进行处理,后续可再将处理结果Post出去。
executor = ThreadPoolExecutor(2)
@app.route("/", methods=["post"])
def do_Post():
metadata_dict = flask.request.json
callback = metadata_dict["callback"]
datasetName = metadata_dict["datasetName"]
datasetId = metadata_dict["datasetId"]
executor.submit(do_task, callback,, datasetName, datasetId)
data = {
'code': 200,
'message': 'message received'
}
return Response(json.dumps(data), mimetype='application/json')
服务端口
flask默认端口为5000,实际使用时可进行修改。
if __name__ == '__main__':
app.run(host='192.168.0.0', debug=False, port=3115)
部分代码整合
from flask import Flask, Response, send_file
import flask
app = Flask(__name__)
executor = ThreadPoolExecutor(2)
@app.route("/log", methods=['get'])
def readLog():
datasetId = flask.request.args.get("datasetId")
global LOG_ROOT
_dir = os.path.join(LOG_ROOT, "log")
logName = str(datasetId) + ".log"
try:
filename = os.path.join(_dir, logName)
if os.path.exists(filename):
return send_file(filename, as_attachment=True, attachment_filename=logName)
else:
return "File Not Found!"
except Exception as e:
print(e)
@app.route("/", methods=["post"])
def do_Post():
metadata_dict = flask.request.json
callback = metadata_dict["callback"]
datasetName = metadata_dict["datasetName"]
datasetId = metadata_dict["datasetId"]
executor.submit(do_task, callback,, datasetName, datasetId)
data = {
'code': 200,
'message': 'message received'
}
return Response(json.dumps(data), mimetype='application/json')
if __name__ == '__main__':
app.run(host='192.168.0.0', debug=False, port=3115)