Flask接口与mock实现

flask_demo.py

'''
    flask的基本应用:
        1. Flask基本语法
        2. flask相当于是web系统的后端。所以访问flask中的内容,也是通过定义好的接口来进行访问的。
            接口包括url、请求方法、请求参数、处理生成的响应结果。
        3. flask中,接口的业务逻辑都是基于def来实现的。相当于一个def+route就是一个接口的全部内容。
        4. 接口的参数通过request来进行接收
        5. flask中写接口内容,最后一定要有return,因为return代表了响应结果的返回
'''
import pymysql
from flask import Flask, request, jsonify

from class34_flask_mock.sql_conf import sql_conn

# 部署flask服务:部署一个Web服务,提供给到用户进行访问。这是一个固定写法
app = Flask(__name__)  # __name__表示当前的py文件

# jsonify默认不支持中文,所以要修改设定
app.config['JSON_AS_ASCII'] = False


# 接口示例
# 定义接口:route表示路由,也就是接口的path,请求方法通过methods来实现定义,一定要大写
@app.route('/demo', methods=['GET'])
def demo():
    name = request.args.get('name')
    data = {
        'name': name,
        'age': 18
    }
    return jsonify(data)


# post接口示例
@app.route('/demo_post', methods=['POST'])
def demo_post():
    data = request.form['data']
    value = request.form['value']
    return '这是post请求中的data参数值:' + value


# login接口示例
@app.route('/login', methods=['POST'])
def login():
    # 根据用户传入的账号密码来进行校验,判断用户是否存在,如果有,则登录成,无则登录失败
    username = request.form.get('username')
    pwd = request.form.get('pwd')
    # 链接数据库
    conn = pymysql.connect(**sql_conn('devs_env'))
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    try:
        # 创建sql语句
        sql = 'select * from user_info where username=%s and password=%s'
        # 执行sql的查询,并获取结果
        cursor.execute(sql, (username, pwd))
        result = cursor.fetchall()
        if len(result) < 1:
            raise
        data = {
            'code': 200,
            'msg': '登录成功!',
            'token': result[0]['token']
        }

        return jsonify(data)
    except:
        return jsonify(message='登录失败,请确认账号或密码的正确性')


@app.route('/mock_pay', methods=['GET'])
def mock_pay():
    # 支付需要传入的参数,遵循支付接口的规范要求:id、token、username、额外增加status参数
    # 返回支付成功的响应结果,或者支付失败的响应结果
    status = request.args.get('status')
    if status == '1':
        return jsonify(message='支付成功,返回blabla相关内容')
    else:
        return jsonify(message='支付失败,返回blabla相关内容')


if __name__ == '__main__':
    # 启动flask服务。
    '''
        debug: 调试模式,默认为False。设置为True则表示启动debug模式
            启动之后,修改代码会自行重启flask服务。一般在调试代码的时候用
        host:指定IP地址。默认为127.0.0.1
        port:指定启动的端口号。默认是5000
    '''
    app.run(debug=True)

mysql_conf.ini

[devs_env]
HOST = 127.0.0.1
PORT = 3306
USER = root
PASSWORD = root
DATABASE = test_db

request_demo.py

import requests

data = {
    "username": "huangcaicai",
    "pwd": "654321"
}
print(requests.post(url='http://127.0.0.1:5000/login', data=data).text)

sql_conf.py

'''
    通过配置文件读取数据库配置信息,进行连接
'''
import configparser
import pathlib


# 定义数据库的链接函数
def sql_conn(env):
    # 获取配置文件的路径,创建conf对象
    conf = configparser.ConfigParser()
    file = pathlib.Path(__file__).parents[0].resolve() / 'mysql_conf.ini'
    # 读取配置信息
    conf.read(file)
    # 将配置文件的内容转换为字典的格式
    values = dict(conf.items(env))
    # 因为默认获取的内容都是str,但是port需要为int,所以需要先做数据的处理
    for key in values.keys():
        if key == 'port':
            # 将port的value转换为int类型
            values[key] = int(values[key])
            # 相当于 values['port'] = int(values['port'])
    return values


# sql_conn()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值