flask專案1實戰:2.2 flask框架下使用圖片驗證碼

laoluobo76發表於2020-11-30
  • 圖片生成元件是成熟的元件,直接到網上搜一個大能開發的元件,在自已框架中引用即可

一、自己系統內的後臺使用介面

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

在這裡插入圖片描述
值與顯示圖片一致即為正確

二、前端圖形驗證碼應用(略)

相關文章