有的时候,前端人员或者产品人员需要通过api接口返回一些模拟数据,但是如果每个这种接口都由后端手写并且还要重新部署工程的话,那样就太麻烦了,于是写了个接口,可以根据模拟数据来自动创建api,主要利用的是python的脚本语言特性和flask模块的轻便性。

一. 创建 api 的程序

此脚本为创建api的接口,模拟数据将存储在mongodb中

auto_api.py 文件

# coding:utf-8from flask import Flask, request
from flask_cors import *
import json
import threading
import os
import pymongoapp = Flask(__name__)api_module = """
@cross_origin()
@app.route('/auto_api/%s')
def index_%s():data_dict = api_db.api_info.find_one({'index_name': '%s'})return data_dict["content"]"""
# 成功编码
success_code = 0
# 失败编码
error_code = 1# url模板
url = "http://192.168.1.123:8089/auto_api/%s"# 连接 mongodb
mongo_conn = pymongo.MongoClient(host='192.168.1.123', port=27017, username="root", password="123zxcv")
api_db = mongo_conn.auto_apiclass AutoApi:""":param api_name: api名称:param index_name: 路径名:param content: json数据内容:param des: 描述"""def __init__(self, api_name, index_name, content, des=""):self.api_name = api_nameself.index_name = index_nameself.content = contentself.des = des# 验证是否是 json 数据def check_if_json(self):if self.api_name is None or self.api_name == "":return "api名称为空", error_codeif self.index_name is None or self.index_name == "":return "路由为空", error_codehistory = api_db.api_info.find_one({'index_name': self.index_name})if history is not None:return "该路由已存在", error_codeif self.content is None or self.content == "":return "数据内容为空", error_codetry:json.dumps(self.content, ensure_ascii=False)except Exception:return "数据不是 json 格式", error_codereturn "ok", success_code# 验证是否是 json 数据def insert_data(self):data_dict = {"api_name": self.api_name, "index_name": self.index_name, "content": self.content, "des": self.des}api_db.api_info.insert_one(data_dict)def update_api_file(self):file_path = "api_instance.py"read_file = open(file_path, "r+", encoding="utf8")lines = read_file.readlines()read_file.close()file_writer = open(file_path, 'w', encoding="utf8")file_writer.writelines([item for item in lines[:-1]])file_writer.write(api_module % (self.index_name, self.index_name, self.index_name))file_writer.write('app.run(host="0.0.0.0", port=8089, debug=True)')file_writer.close()# 启动实用api线程@staticmethoddef success(url):return {"url": url, "message": "ok", "code": 0}@staticmethoddef error(error):return {"error": error, "message": "ok", "code": 1}@cross_origin()
@app.route('/test_api/create', methods=["POST"])
def create_api():# 读取参数api_name = request.json.get('api_name')index_name = request.json.get('index_name')content = request.json.get('content')des = request.json.get('des')# 创建api实例auto_api = AutoApi(api_name, index_name, content, des)result, result_code = auto_api.check_if_json()if result_code != success_code:return auto_api.error(result)try:# 将 api 信息插入 MongoDBauto_api.insert_data()# 加锁lock = threading.Lock()with lock:auto_api.update_api_file()return auto_api.success(url % index_name)except Exception as e:print(e)return auto_api.error(e)app.run(host="0.0.0.0", port=8083, debug=True)

二.创建好的 api 接口工程

api_instance.py 文件

# coding:utf-8from flask import Flask
from flask_cors import *
import pymongoapp = Flask(__name__)# 连接 mongodb
mongo_conn = pymongo.MongoClient(host='192.68.1.123', port=27017, username="root", password="123zxcv")
api_db = mongo_conn.auto_api@cross_origin()
@app.route('/auto_api/api_test')
def index_api_test():data_dict = api_db.api_info.find_one({'index_name': 'api_test'})return data_dict["content"]app.run(host="0.0.0.0", port=8089, debug=True)

三.上传至服务器分别启动

nohup python3.7 auto_api.py &nohup python3.7 api_instance.py &

四.调用接口

1. 创建api

2.请求创建好的api

自动创建 api 模拟数据相关推荐

  1. database2sharp mysql_C# NetCore使用AngleSharp爬取周公解梦数据 MySql数据库的自动创建和页面数据抓取...

    这一章详细讲解编码过程 那么接下来就是码代码了,GO 新建NetCore WebApi项目 空的就可以 NuGet安装 Install-Package AngleSharp 或者界面安装 using. ...

  2. python csv文件创建时间_记录 python 根据csv文件自动创建表插入数据

    # -*- coding: utf-8 -*- importos importpymysql importpandas aspd # 1.连接 Mysql 数据库 try: conn = pymysq ...

  3. C#中使用Bogus创建模拟数据

    原文:CREATING SAMPLE DATA FOR C#[1] 作者:Bruno Sonnino 译文:C#中使用Bogus创建模拟数据 译者: Lamond Lu 背景 在我每次写技术类博文的时 ...

  4. Docker创建私有仓库 | 数据卷和数据卷容器 | 容器互联 操作详解

    目录 一.Docker私有仓库的操作 1.创建私有仓库 2.上传 3.获取私有仓库列表 4.测试私有仓库下载 二.Docker数据卷和数据卷容器 1.数据卷 2.数据卷容器 三.容器互联(使用cent ...

  5. Excel自动化办公(一) | 满足你对Excel数据的所有幻想,python-office一键生成模拟数据

    自从在官网发布了python-office这个专门用来自动化办公的库,后台经常收到提问:晚枫,什么时候开发Excel功能呀? 今天Excel自动化办公的第一个功能上线了:自动生成带有模拟数据的Exce ...

  6. mock模拟的数据能增删改查吗_使用Swager API Docs和easy-mock生成模拟数据

    前面文章已经搭建了本地的easy-mock 本地搭建Easy-Mock实现模拟数据 常见的Mock方式: 将模拟数据直接写在代码里 利用javascript拦截请求 利用Charles.Fiddler ...

  7. Spring Boot(九)Swagger2自动生成接口文档和Mock模拟数据

    一.简介 在当下这个前后端分离的技术趋势下,前端工程师过度依赖后端工程师的接口和数据,给开发带来了两大问题: 问题一.后端接口查看难:要怎么调用?参数怎么传递?有几个参数?参数都代表什么含义? 问题二 ...

  8. idea swagger生成接口文档_Spring Boot(九)Swagger2自动生成接口文档和Mock模拟数据...

    一.简介 在当下这个前后端分离的技术趋势下,前端工程师过度依赖后端工程师的接口和数据,给开发带来了两大问题: 问题一.后端接口查看难:要怎么调用?参数怎么传递?有几个参数?参数都代表什么含义? 问题二 ...

  9. 前端Vue使用封装Mock.js和api请求模拟数据案例(带源码)

    目录 一:准备阶段 二:使用阶段 一:准备阶段 1.安装mockjs axios npm install mockjs --save npm install axios --save 2.main.j ...

最新文章

  1. 2.5英寸硬盘何止“五脏俱全”(硬盘构造再揭秘之四)
  2. 数组的reduce方法
  3. 怎样隐藏“滚动条”?
  4. angular 示例项目
  5. R语言处理非线性回归模型C-D方程,使用R语言进行多项式回归、非线性回归模型曲线拟合...
  6. Vue 安装 live-server
  7. Java基础篇之什么是CharArrayReader
  8. Linux中tmux多终端复用和Screen多窗口工具
  9. Binary Tree Right Side View 二叉树右视图
  10. ViewFlipper使用详解
  11. book118可预览文档下载
  12. java房屋出租系统
  13. 鸿蒙系统屏幕录制,鸿蒙系统游戏性能出色;三星折叠屏发布屏下摄像头
  14. 对涉密计算机检查内容,保密工作检查内容主要有哪些
  15. 飞信机器人 ld-linux.so.2,飞信机器人安装
  16. 英语单词记忆 词源法-思维导图(20)词源st/sist/stat/stin/stem-217
  17. 判断输入的手机号码格式是否正确(用Java实现)
  18. Arxiv | 预测新型蛋白质间相互作用的图神经网络模型
  19. 大型连锁药店管理系统源码
  20. 实现图书增删改查和分页显示图书信息

热门文章

  1. Linux磁盘挂载问题 ***is apparently in use by the system; will not make a filesystem here!
  2. 抖音跳转微信加好友功能实现解析
  3. 网页右侧的漂浮广告代码,随滚动条滚动
  4. 修复自定义标题word题注错误:错误,文档中没有指定样式的文字以及编号无法随章节变化问题
  5. php slim get,php – 在Slim上获取请求参数
  6. 备份数据库、恢复数据库
  7. .aspx和.aspx.cs之间的区别
  8. 【蓝桥杯】python进制转换16进制转8进制。16进制转10进制。10进制转16进制。
  9. C程序设计语言第二版·新版,C程序设计语言(第2版·新版) PDF扫描版[19MB]
  10. STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记四(5):系统滴答定时器