第一步:封装使用方法
在utils目录中,编写我的md5加密的方法,如下:
import re
import hashlib
from os import path
from typing import Callable
from flask import current_app# 这里封装的是工具类的方法def basename(filename: str):name, ext = path.splitext(filename)return name.rstrip(ext)def md5(x: str) -> str:h1 = hashlib.md5() #创建一个md5对象h1.update(x.encode(encoding='utf-8')) # 使用utf-8编码数据return h1.hexdigest() # 返回加密后的十六进制字符串upper: Callable[[str], str] = lambda x: x.upper()# 去除html标签
def filter_html_tag(html):pattern = re.compile('<[^>]+>', re.IGNORECASE)from typing import Matchdef repl_func(match: Match[str]) -> str:if match.group(0).startswith('<img'):return match.group(0)elif match.group(0).startswith('<br'):return match.group(0)else:return ''result = pattern.sub(repl_func, html)result = result.replace(' ', '') \.replace('<', '') \.replace('\n', '<br/>')return result.strip()# 封建医脉通常用的生成token的方法
def api_sign(user_id:str, project_id:str):import timetimestamp = int(time.time()) #当前时间戳api_key = current_app.config.get('API_KEY') # 从配置文件获取keystr_to_sign = "project_id{}timestamp{}user_id{}".format(project_id, timestamp, user_id)token = upper(md5(md5(str_to_sign) + api_key))return token, timestamp
第二步:使用方法
from project.utils import api_signblog_base_blueprint = Blueprint('blog', __name__, url_prefix='/api')@blog_base_blueprint.route('/token', methods=['POST'])
def postToken():user_id = request.form.get('user_id')project_id = request.form.get('project_id')current_app.logger.info('生成token哟')(token, timestamp) = api_sign(user_id, project_id)return jsonify({'code': 1,'msg': '成功','data': {'token' : token,'timestamp' : timestamp}})
顺带截图分享一下我的目录结构: