- 图片生成组件是成熟的组件,直接到网上搜一个大能开发的组件,在自已框架中引用即可
一、自己系统内的后台使用接口
1、接口文档:
- 接口名字
- 描述
- URL
- 请求方式
- 传入参数
- 返回值
接口:获取图片验证码
描述:前端访问,可以获取到验证码图片
URL:/api/v1.0/image_codes/<image_code_id>
请求方式:GET
传入参数:
名字 类型 是否必须 说明 image_code_id 字符串 是 验证码的编号 返回值:
名字 类型 是否必须 说明 errno 字符串 否 错误代码 errmsg 字符串 否 错误内容
2、后端接口定义(路由定义):
- 采用REST风格
- 调用 图片验证码组件,生成图片验证码
- 将图片验证码存到redis中
- 以图片形式将图片验证码数据返回前端
@api.route("/image_codes/<image_code_id>")
def get_image_code(image_code_id):
"""
获取图片验证码
:param image_code_id: 图片的编号
:return: 验证码,验证码图像
"""
# 验证参数
# 业务逻辑处理
# 生成验证码图片
text, image_data = captcha.generate_captcha()
# 保存验证码
try:
redis_store.setex('image_code_%s' % image_code_id, constants.IAMGE_CODE_REDIS_EXPIRES, text)
except Exception as e:
logging.error(e)
return jsonify(errno=RET.DBERR, errmsg='保存图片验证码失败')
# 返回值
response = make_response(image_data)
response.headers['Content-Type'] = 'image/jpg'
return response
3、在蓝图中引用
- 路由一定要在蓝图中引用,否则无法被调用
from flask import Blueprint
api = Blueprint("api_1_0", __name__, url_prefix="/api/v1.0")
from . import demo,verify_code
4、验证
4.1 启动后台服务
4.2 地址栏输入:http://127.0.0.1:5000/api/v1.0/image_codes/xxxx
- 正常显示图片验证码即可
4.3 启动redis客户端,get image_code_xxxx
值与显示图片一致即为正确