一、结构设计

上一篇,写了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还有其他好处,这里先不赘述

最新文章

  1. Device ID
  2. Java基础之读文件——使用通道读二进制数据(ReadPrimes)
  3. servlet&jsp高级:第五部分
  4. 开发版本控制git
  5. iOS 10 使用相机及相簿闪退的问题修正
  6. 操作BLOB、CLOB、BFILE
  7. 让chrome浏览器快的不要不要的
  8. SQL Server 2008 对XML 数据类型操作
  9. Ice-2.1.2在RHEL Server 5.5上的安装
  10. 原创SQlServer数据库生成简单的说明文档小工具(附源码)
  11. pandas教程1:pandas数据结构入门
  12. 201521123016 《Java学习笔记》 第11周学习总结
  13. Android 双击退出程序实现(有侧滑界面)
  14. 程序员需要有多懒 ?- cocos2d-x 数学函数、常用宏粗整理
  15. Java中String类常用方法(字符串中的子字符串的个数)
  16. NOIAC41 最短路(线性基)
  17. [PHP] 算法-数值的整数次方的PHP实现
  18. 开源中国/码云 README.md上传图片的爬坑记录
  19. Material Designer的低版本兼容实现(八)—— Flat Button
  20. 130. Surrounded Regions(M)

热门文章

  1. concurrent(五)同步辅助器CountDownLatch & 源码分析
  2. java并发编程(九)ThreadLocal & InheritableThreadLocal
  3. Java实现添加压缩文件
  4. 《Linux就该这么学》培训笔记_ch18_使用MariaDB数据库管理系统
  5. 在GitHub中创建目录
  6. 宏offsetof分析
  7. SQL Server -----创建sqlserver 数据库 、表
  8. AtCoder-arc059 (题解)
  9. C++核心技术登录实现
  10. Java随堂笔记三