• 【Python】学习笔记5-利用flask来mock接口


    # 1、mock接口
    目的:
    mock|muk|接口,就是模拟接口
    1、暂时代替第三方接口测试,自己模拟一个接口
    2、辅助测试,用来代替没有开发好的接口
    3、查看数据

    # import flask #python的轻量级的开发框架
    # # 接口,后台服务的开发
    # # 在浏览器运行http://127.0.0.1:8080/get_user即可,或者其他访问接口的方式
    # server = flask.Flask(__name__) #__name__当前文件名,把咱们这个app python当做一个server
    # @server.route('/get_user',methods=['get','post']) #将下面函数变成一个接口
    # def get_all_user():
    # return 'cm的接口' #return只能返回字符串
    # #启动服务,加debug自动帮忙重启
    # server.run(port = 8080,debug = True)


    # 2、调用自己的模块,连接数据库,浏览器请求接口
    # import tools #使用时,需要用tools.op_mysql()
    from lib.tools import op_mysql #使用时,直接用op_mysql()
    # 以上两种方式都可以

    3、写接口前先要形成标准的目录结构,分解一下各个目录的文件

      4、start.py运行的启动程序,在这里启动 服务

     1 #这是程序的入口文件,将启动服务的命令放里面
     2 
     3 #增加根目录为环境变量,方便底层目录执行时目录错误
     4 import sys,os
     5 BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #取到api目录,根目录
     6 sys.path.insert(0,BASE_PATH)
     7 
     8 #加环境变量才能导入,否则导入会异常
     9 from lib.main  import server
    10 server.run(port = 8080,host = '0.0.0.0',debug = True) #默认端口号是5000
    11 #host = '0.0.0.0' 代表局域网内别人都可以通ip访问自己的接口

    5、setting 设置常规变量等

    1 MYSQL_HOST = 'X.X.X.X'
    2 PASSWORD = '123456'
    3 PORT = 3306
    4 USER = 'jxz'
    5 DB = 'jxz'

    6、main.py......自己的主程序

     1 # import tools #使用时,需要用tools.op_mysql()
     2 from lib.tools import op_mysql  #使用时,直接用op_mysql()
     3 # 以上两种方式都可以
     4 
     5 import flask,json #python的轻量级的开发框架
     6 # 接口,后台服务的开发
     7 # 在浏览器运行http://127.0.0.1:8080/get_user即可,或者其他访问接口的方式
     8 server = flask.Flask(__name__) #__name__当前文件名,把咱们这个app python当做一个server
     9 
    10 
    11   #浏览器输出bt_stu表中前5条的数据
    12 @server.route('/get_user',methods=['get','post']) #将下面函数变成一个接口
    13 def get_all_user():
    14     sql = 'select * from bt_stu limit 5;'
    15     res = op_mysql(sql = sql)
    16     response = json.dumps(res,ensure_ascii=False)
    17     return response #return只能返回字符串
    18 
    19 
    20 # 浏览器输入用户id、姓名,插入数据到数据库stu表,
    21 @server.route('/add_user',methods=['post']) #代码支持什么类型的接口
    22 def add_user():
    23     user_id = flask.request.values.get('id')
    24     user_name = flask.request.values.get('u')
    25     sql = "insert into stu values ('%s','%s');"%(user_id,user_name)
    26     if user_id and user_name:
    27         res = op_mysql(sql = sql)
    28         response = {"code":"308","message":"success"}
    29     else:
    30         response = {"code":"503","message":"参数不能为空"}
    31     return json.dumps(response,ensure_ascii=False) #return只能返回字符串

    7、tools工具类文件,相关的函数在这里面

     1 import pymysql
     2 from conf import setting
     3 
     4 # 1、操作mysql
     5 def op_mysql(sql):
     6     conn = pymysql.connect(host=setting.MYSQL_HOST,user= setting.USER,
     7                            password=setting.PASSWORD,
     8                            port=setting.PORT,
     9                            charset = 'utf8',
    10                            db = setting.DB)
    11     cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
    12     #判断是否需要commit,根据select update delete insert的类型
    13     cur.execute(sql)
    14     sql_start = sql[:6].upper()# select不区分大小写,取前6位转换成大写
    15     if sql_start == 'SELECT':
    16         res = cur.fetchall()
    17     else:
    18         conn.commit()
    19         res = 'ok'
    20     cur.close()
    21     conn.close()
    22     return res
  • 相关阅读:
    二分+树状数组/线段树(区间更新) HDOJ 4339 Query
    数论(GCD) HDOJ 4320 Arcane Numbers 1
    拓扑排序/DFS HDOJ 4324 Triangle LOVE
    离散化+线段树/二分查找/尺取法 HDOJ 4325 Flowers
    KMP HDOJ 4300 Clairewd's message
    高精度模板
    前缀+排序 HDOJ 4311 Meeting point-1
    Kruskal HDOJ 4313 Matrix
    最短路(Dijkstra) HDOJ 4318 Power transmission
    (转)C语言运算符优先级 详细列表
  • 原文地址:https://www.cnblogs.com/amengmeng/p/8361416.html
Copyright © 2020-2023  润新知