美文网首页思科ACIAndroid开发程序员
基于Django设计的Restful MockServer

基于Django设计的Restful MockServer

作者: Android开发哥 | 来源:发表于2017-03-06 10:05 被阅读312次

    工具在Github上面:https://github.com/August1996/mockserver

    MockServer

    前言

    某公司的某个开发小组人员分配如下:

    人员 工作
    小A 前端
    小B Android
    小C IOS
    小D 后台

    出于维护性和兼容性等的考虑.三端(前端,Android,IOS)决定使用restful的方式去设计三端的接口.

    随着开发的进行,小A 小B 小C陆续编写接口给后台.因为后台忙不过来,所以接口不能按时提交.

    这时小A,小B,小C的工作也就阻塞了,这样就造成三端过度依赖后台.接入数据和测试的工作就一天拖一天.

    于是项目的整体进度开始延长...

    既然我们已经知道接口是怎么样的了,那么为什么我们不自己弄一台服务器,专门来返回对应接口的数据呢?

    MockServer就是为了解决这一尴尬的局面.字面意思很浅显易懂,就是模拟数据的服务器.

    本项目基于PythonDjango框架开发.

    依赖的python包:
    * django 框架
    * django-suit 主题

    数据库:sqlite

    安装

    Linux

    安装Python

    Linux下自带Python环境,所以就不需要再配置Python环境了
    只需要安装依赖包

    安装PIP

    pip是python的包管理工具

    • 下载get-pip
    • 运行get-pip,脚本会自动安装
    sudo python get-pip.py
    

    安装依赖包

    主要是安装前言提到的两个包

    sudo pip install django django-suit
    
    安装Sqlite3

    Debian系的安装方法

    sudo apt-get install sqlite3
    

    项目克隆

    克隆本项目到本地

    git clone https://github.com/August1996/mockserver
    

    启动项目

    进入项目工作目录并且启动服务器

    cd mockserver
    python manage.py runserver 0.0.0.0:8080
    

    如果启动成功,会返回下面响应

    Performing system checks...
    
    System check identified no issues (0 silenced).
    February 11, 2017 - 06:08:22
    Django version 1.8.6, using settings 'mockserver.settings'
    Starting development server at http://192.168.0.102:8080/
    Quit the server with CONTROL-C.
    

    使用

    管理页面

    地址

    如果服务器地址为http://192.168.0.102:8080/
    那么请打开http://192.168.0.102:8080/admin

    登录界面登录界面

    登录

    默认登录信息:

    admin
    mockserver
    
    管理界面管理界面

    添加接口

    API组成

    一个接口由三部分组成

    名称 意义
    API 代表一个服务器
    Router 代表一个接口
    Response 代表一种返回结果
    例子

    假如现在我们有一个test项目那么我们添加API:

    服务器名称:  测试
    服务器根路径: test
    
    添加API添加API

    假如test项目有个register的接口,我们添加Router:

    路由名称:       注册
    路由路径:       register
    路由服务器:  测试
    
    添加Router添加Router

    假如test项目的register接口有两种返回结果,返回时延迟1秒(模拟网络慢),我们添加Response

    响应名称:       注册失败
    Json:
    {
        "status_code": 300,
        "message": "注册失败",
        "objs": {
            "user_token": "XXXXX"
        }
    }
    响应延迟:       1
    响应路由:       测试->注册
    
    响应名称:       注册成功
    Json:
    {
        "status_code": 200,
        "message": "注册成功",
        "objs": {
            "user_token": "XXXXX"
        }
    }
    响应延迟:       1
    响应路由:       测试->注册
    
    添加Response添加Response

    访问

    最后我们访问http://192.168.0.102:8080/test/register这个地址,MockServer就会随机返回上面的一种结果

    结果返回结果返回

    参考

    具体参考Python以及Django框架的用法.

    相关文章

      网友评论

      • 望月成三人:前端自己用mock不行吗
        Android开发哥:@望月成三人 方法有很多种,在客户端开发过程中提出一点自己的拙见
      • 小鱼游儿:给你提一点建议哈,python字符串判断空 util.isTextEmpty(api) or util.isTextEmpty(router):修改成if not api or not router 就行。变量名和方法名,不要用驼峰式,apiList等修改成api_list。一看你就是java程序员 哈哈
        Android开发哥:@小鱼游儿 谢谢提醒,因为本身做客户端开发的习惯
        小鱼游儿:集合size也可以这么判断为0,if not router_list
      • taoza:请问: 您用的Python , version is ? 2 or 3? Thanks
        taoza:@August1996 谢谢。
        Android开发哥:@天下独绝 用的是2.7,其实主要是Django框架
      • ldldlkdldld:不错,学习一下
        Android开发哥:@周永强 谢谢支持:heart:

      本文标题:基于Django设计的Restful MockServer

      本文链接:https://www.haomeiwen.com/subject/aeiowttx.html