python使用flask框架编写一个mock挡板

记录如下:

#pip install ddddocr
#pip install flask
import flask
from flask import request,make_response,jsonify
import json
import ddddocr #智能识图框架-识图效率较差,但是不用安装其他东西
import logging #日志框架
#flask:一个web框架,通过flask提供的装饰器@server.route()将普通函数转为服务
# 创建一个服务。 将当前文件注册为服务
server = flask.Flask(__name__)

# 配置日志
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
server.logger.addHandler(handler)
server.logger.setLevel(logging.INFO)

@server.route('/get_login_image',methods=['post'])
@server.before_request
def get_login_image():
    #request.method, request.path, request.headers,
    #server.logger.info('Request: %s', request)
    #解析图片验证码
    requestdata = request.get_data(as_text=True)
    server.logger.info('Request imagepath: %s',requestdata)
    #force=True,非标准的json强制转化为json-如果可以转,当传参路径是“\”时解析也会失败,应该是转义导致的,转为/后解析成功
    data1 = request.get_json(force=True,).get('imagepath')
    server.logger.info('Request result: %s',data1)
    #path = "D:\pythonfile\image\logimage1.jpeg"
    path = data1.replace('/','\\')
    server.logger.info('Request path: %s',path)
    if path :
        ocr = ddddocr.DdddOcr(show_ad=False)
        with open(path, 'rb') as f:
            img_data = f.read()
        ret = ocr.classification(img_data)
        result = {'message': '请求成功!','code':str(ret)}
        return json.dumps(result, ensure_ascii=False)
    else:
        return '参数不能为空!'

# 在route()方法中定义服务路径、请求方法
@server.route('/login_get', methods=['get'])
def log_get():
    # get请求时,获取参数的方法
    username = request.values.get('u') # 获取参数的值
    password = request.values.get('p')
    if username and password:
        if username == 'zzz' and password == '1234':
            result = {'code': 200, 'message': '请求成功!'} # 类型为字典dict
 
            # 将字典转化为json格式。注意是json.dumps,不是json.dump
            return json.dumps(result, ensure_ascii=False)
        else:
            result = {'code': 400, 'message': '请求失败!'}
            return json.dumps(result, ensure_ascii=False)
    else:
        return '参数不能为空!'
 
@server.route('/login_post', methods=['post'])
def login_post():
    # post请求时,获取参数的方法
    username = flask.request.json.get('u') # 获取参数的值
    password =flask.request.json.get('p')
    # 多层级json时,获取参数的方法
    key = flask.request.json.get('accesskey1').get('accesskey3').get('accesskey4')
    if username and password:
        if username == 'zzz' and password == '1234':
            result = {'code': 200, 'message': '请求成功!'}
            return json.dumps(result, ensure_ascii=False)
        else:
            result = {'code': 400, 'message': '请求失败!'}
            return json.dumps(result, ensure_ascii=False)
    else:
        return '参数不能为空!'

@server.route('/login_response', methods=['get'])
#使用make_response设置响应状态,响应头和响应消息
def login_response():
    response = make_response('make_res测试')
    response.headers['id'] = 'who'
    response.status = '404 not found'
    return response
#('响应消息','响应状态','{headers}')
#    return ('hello', 200, {'id': 'who are you'})

@server.route('/')
#使用jsonify设置响应头和响应消息
def login_jsonify():
    response = jsonify({'message': 'Hello, world!'})
    response.headers['content-type'] = 'application/json'
    return response
 
 
if __name__ == '__main__':
#配置远程访问服务器,需要在run中如示例指定host和port,不考虑防火墙的情况下即可访问,访问地址在运行时,会在服务台打印出来
    server.run(host="0.0.0.0",port=5000) # 运行服务

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值