一、结构设计

上一篇,写了Mock Server的基础实现与被测系统的对接

当我们要mock 的 api越来越多的时候,路由与相关的方法都堆在app.py中就不合适了,不可拔插,可读性也比较差,因此要调整下结构。

期望结果:

  1、app.py中只负责server的配置信息

  2、各个路由与对应的方法可在独立的文件中维护

  3、方便拔插

如下图,resources中分别维护各个API,在app.py中配置server信息及拔插API(这个也可以分成两个文件),common中放公共方法

二、Flask-RESTful

这里我们引入Flask-RESTful来实现一中的内容。

首先安装:pip install Flask-RESTful

1、Resources

Flask-RESTful 提供的最主要的基础就是资源(Resources)。资源(Resources)是构建在 Flask 可拔插视图 之上,只要在你的资源(Resource)上定义方法就能够容易地访问多个 HTTP 方法。

我们看一下API1中的代码:

 __author__ = 'xumj'
from flask_restful import Resource
from flask import request,jsonify def data_to_dict(data):
data_dict = dict((line.split('=') for line in data.split('&')))
return data_dict class API1(Resource):
def get(self):
result = {'code':1000,'result':'test1'}
print 'get request'
return jsonify(result) def post(self):
print 'post request'
data = request.data
if not data or data == 'None':
print 'no data'
result = {'code':500,'result':'','msg':'data is not find'}
return jsonify(result)
else:
data = data_to_dict(data) if not data.has_key('num'):
result = {'code':601,'result':'','msg':'num can not be empty'}
else:
result = {'code':2000,'result':'test2','msg':'num is' + data['num']}
return jsonify(result)
上面的代码废话比较多,我们说下主要的东西:
  首先from flask_restful import Resource
  然后定义类class API1(Resource)
  接着按需在类下定义相应的http方法,如get、post、put、delete(对应请求的method)
2、配置URLS
我们在app.py中配置相关信息:
  首先import Api及resources文件中的对应API类
  然后通过api.add_resource()添加api及对应的URLS(如图,一个API可以对应多个URL),如果某个API的方法有问题或不想开放,则这里不添加就可以。
  PS:这块可独立在一个文件中配置
 #coding:utf-8
__author__ = 'xumj'
from flask import Flask
from flask_restful import Api
from resources.API1 import API1
from resources.API2 import API2 app = Flask(__name__)
api = Api(app)
api.add_resource(API1, '/API1')
api.add_resource(API2, '/API2','/API3') if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=9003)
#host:主机ip,配置为0.0.0.0或主机的ip,则其他同网络环境设备就可以访问该server
#port:端口号,根据实际情况自定义设置,如5000

3、Flask-RESTful还有其他好处,这里先不赘述

Mock Server之flask_restful(python+flask)的更多相关文章

  1. 一个简单的mock server

    在前后端分离的项目中, 前端无需等后端接口提供了才调试, 后端无需等第三方接口提供了才调试, 基于“契约”,可以通过mock server实现调试, 下面是一个简单的mock server,通过pyt ...

  2. Python+Flask搭建mock api server

    Python+Flask搭建mock api server 前言: 近期由于工作需要,需要一个Mock Server调用接口直接返回API结果: 假如可以先通过接口文档的定义,自己模拟出服务器返回结果 ...

  3. Mock Server之与被测系统对接(python+flask)

    第一步:获取入参与返回结果 先通过postman.jmeter.自己写脚本之类的方式请求我们的mock server,试着获取入参与对应的返回值,这里我用的是robotframework + Requ ...

  4. Python接口测试实战5(下) - RESTful、Web Service及Mock Server

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  5. Error generating Swagger server (Python Flask) from Swagger editor

    1down votefavorite   http://stackoverflow.com/questions/36416679/error-generating-swagger-server-pyt ...

  6. [转]使用flask实现mock server

    什么是mock server: http://www.testclass.net/interface/mock_server 使用flask 实现  mock server : http://www. ...

  7. 1分钟搭建极简mock server

    1.无聊的背景.起源: 如今的业务系统越来越复杂庞大,各个功能直接的调用也是多如牛毛,但如果在联调的时候,恰好被调的接口正在开发,怎么办?傻傻的等么,不存在的!这时会搭建一些server来进行mock ...

  8. 基于django rest framework的mock server实践

    网上找了一下mock server的实现,发现python的基本都是基于flask来实现的,因最近在学django,就尝试用drf实现了下: A brief introduction of sui_m ...

  9. Mock Server的搭建

    一.概述 我们系统与第三方开票系统有交互,场景是我们系统请求第三方开票系统,第三方开票系统根据我们的请求数据,生成开票信息然后返回发票号或异常信息,我们根据返回的信息做对应的处理.因为配合上存在一些障 ...

随机推荐

  1. Oracle_12541错误和ora-12514错误

    ORA-12541: TNS无监听程序错误 在oracle安装目录(E:\app\Administrator\product\instantclient_12_1\NETWORK\ADMIN)下查找l ...

  2. INSERT,UPDATE,DELETE时不写日志

    我们在维护数据库的过程中,可能会遇到海量数据的存储和维护,但在有的情况下,需要先试验,然后再对实际的数据进行操作,那么在试验这个过程中,我们是不需要写日志的,因为当你对海量数据操作时,产生的日志可能会 ...

  3. JavaScript 一些实用技巧

    快速创建从0到n的数字 let arr1 = [...(new Array(n)).keys()]; let arr2 = Array.from({length:n},(v, k) => k); ...

  4. spring boot 从开发到部署上线(简明版)

    我们组有一个优良传统--借鉴于"冰桶挑战赛"的形式,采取点名的方式,促进团队成员每天利用一小段时间,不断的完善团队 wiki 的小游戏. 但有时候忙于业务,可能会忘记,所以我写了一 ...

  5. 031 Spring Data Elasticsearch学习笔记---重点掌握第5节高级查询和第6节聚合部分

    Elasticsearch提供的Java客户端有一些不太方便的地方: 很多地方需要拼接Json字符串,在java中拼接字符串有多恐怖你应该懂的 需要自己把对象序列化为json存储 查询到结果也需要自己 ...

  6. GIT 安装和使用

    目录 GIT 安装和使用 一.GIT 介绍 二.GIT 安装 三.GIT 使用 1. 配置 2. 创建版本库 3. 远程仓库 4. 分支管理 5.标签管理 6. 自定义 GIT 安装和使用 一.GIT ...

  7. django开发_七牛云图片管理

    七牛云注册 https://www.qiniu.com/ 实名认证成功之后,赠送10G存储空间 复制粘贴AK和SK 创建存储空间,填写空间名称,选择存储区域.访问控制选择位公开空间 获取测试域名 七牛 ...

  8. java中static和final修饰符

    static和final修饰符 一.static修饰符 static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. ...

  9. Asp.Net Core中使用GDI+绘图提示gdiplus库找不到的问题

    参考  https://www.cnblogs.com/VirtualMJ/p/9917916.html 文章中   1 2 3 yum install -y epel-release yum mak ...

  10. 用友U9 UFSoft.UBF.Business.Session

    Session的概念 在现在UBF中,Session的本意是work unit,即持久层的一个边界,非常轻,主要用作批量提交,并标识这次批量提交的边界,不涉及到事务等概念. 当前ISession可以通 ...