【Python】學習筆記5-利用flask來mock接口

# 一、mock接口
目的:
mock|muk|接口,就是模擬接口
一、暫時代替第三方接口測試,本身模擬一個接口
二、輔助測試,用來代替沒有開發好的接口
三、查看數據

# 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)


# 二、調用本身的模塊,鏈接數據庫,瀏覽器請求接口
# import tools #使用時,須要用tools.op_mysql()
from lib.tools import op_mysql #使用時,直接用op_mysql()
# 以上兩種方式均可以

三、寫接口前先要造成標準的目錄結構,分解一下各個目錄的文件

  四、start.py運行的啓動程序,在這裏啓動 服務python

 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訪問本身的接口

五、setting 設置常規變量等mysql

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

六、main.py......本身的主程序sql

 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只能返回字符串

七、tools工具類文件,相關的函數在這裏面數據庫

 1 import pymysql
 2 from conf import setting
 3 
 4 # 一、操做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
相關文章
相關標籤/搜索