文章目录
一、导入模块
from flask import Flask,request
from utils.MysqlUtilss import Mysql
from flask_cors import CORS
import json
mysql = Mysql()
server = Flask(__name__,template_folder='../templates')
CORS(server,supports_credentials=True)
二、get与post获取获取到请求参数
1.在 Flask 中获取通过
POST
请求发送的 JSON 数据:
params=request.get_json()
2.在 Flask 中获取通过GET
请求发送的查询参数:
params=request.args.to_dict()
三、 POST 请求的路由
@server.route(“/路径”,methods=[‘接口类型’])
def 自定义函数名():第一步:获取前端参数
第二步:对前端参数进行校验是否正确
第三步:拼接sql
第四步:执行并返回结果
ruturn数据格式
res = {“success”: True,“message”: “新增成功”}
server.logger.info(f"res:{res}")
return json.dumps(res,ensure_ascii=False,cls=DateEncoder)
cls=DateEncoder 对Datatime进行特殊处理
json_dumps(dict)时,如果dict包含有汉字,一定加上ensure_ascii=False。否则按参数默认值True,意思是保证dumps之后的结果里所有的字符都能够被ascii表示,汉字在ascii的字符集里面,因此经过dumps以后的str里,汉字会变成对应的unicode。
@server.route("/api/add_user",methods=['post'])
# @decorator_parse_token 登录锁
def add_user():
# ###############获取前端参数##############################
params = request.get_json()
print(params)
# ###############对前端参数进行校验是否正确#########################
compliance_list = ['所有字段']
check_com = []
for i in params.keys():
if i not in compliance_list:
check_com.append(False)
else:
pass
if False in check_com:
return {"success": False, "message": "修改失败"}
if "username" in params:pass
else:return {"success": False, "message": "修改失败"}
# ###################拼接sql#####################
user=params["username"]
params.pop("username")
if not params:
return {"success": False, "message": "修改失败"}
set_sql = ','.join(['%s="%s"' % (i, j) for i, j in params.items()])
select_sql="UPDATE user SET %s WHERE username='%s'"%(set_sql,user)
print(select_sql)
# ###################执行并返回结果#####################
mysql.exec(select_sql)
res = {"success": True,"message": "新增成功"}
server.logger.info(f"res:{res}")
return json.dumps(res,ensure_ascii=False,cls=DateEncoder)
四、 GET 请求的路由
return数据格式
res = {“success”: True, “data”: re}
return json.dumps(res,ensure_ascii=False,cls=DateEncoder)
@server.route("/api/get_user_list", methods=['get'])
# @decorator_parse_token
def get_user_list():
"""
获取用户列表
:return:
"""
# ###############获取前端参数##############################
params=request.args.to_dict()
print(params)
server.logger.info("paramsdsad111%s:" % params)
if "current" in params:
params.pop("current")
params.pop("pageSize")
# ###############对前端参数进行校验是否正确#########################
compliance_list = ['所有字段']
required_list = ['必填字段']
check_com = []
check_req = []
for i in params.keys():
if i not in compliance_list:
check_com.append(False)
elif i not in required_list:
check_req.append(False)
else:pass
if False in check_com:
return {"message":"字段不合规"}
# if len(check_req) == len(params):
# return {"message": "必填项校验失败"}
# ###################拼接sql#####################
params["is_delete"] = "0"
# where_sql = ' and '.join(['%s="%s"' % (i, j) for i, j in params.items()])
where_sql = ' and '.join([f'{i} like "%{j}%"' for i, j in params.items()])
print(where_sql)
select_sql = f"select * from user where {where_sql} order by id desc"
print(select_sql)
# ###################查询并返回结果#####################
re = mysql.fetchall(select_sql)
# print(re)
res={"success":True,"data":re}
return json.dumps(res)
五、数据拼接方法
(1)SELECT:
where_sql = ' and '.join([f'{i} like "%{j}%"' for i, j in params.items()])
select_sql = f"select * from user where {where_sql} order by id desc"
(2) UPDATE:
set_sql = ','.join(['%s="%s"' % (i, j) for i, j in params.items()])
select_sql="UPDATE user SET %s WHERE username='%s'"%(set_sql,user)
(3) INSERT:
k=",".join([i for i in params.keys()])
v=",".join([f"'{i}'" for i in params.values()])
sql_key = f"insert into keywords ({k}) values ({v})"