Python+Flask搭建mock api server

Python+Flask搭建mock api server

前言:

近期由于工作需要,需要一个Mock Server调用接口直接返回API结果;

假如可以先通过接口文档的定义,自己模拟出服务器返回结果,直接对接口基本功能进行联调测试并编写自动化测试脚本,等服务器上线之后,切换server地址,直接可以简化调试时间,缩短项目测试周期;

准备工作

Python安装

Flask安装:pip install flask

Get 请求

简单的python代码

from flask import abort, jsonify, Flask, request, Response

app = Flask(__name__)

tasks = {
    "data": {
        "loginName": "admin",
        "roles": 1,
        "permissions": 1,
        "active": 1
    },
    "stateCode": {
        "code": 0,
        "desc": "成功"
    },
    "statusText": "成功",
    "timestamp": "1500531770453",
    "success": 1
}

@app.route("/task", methods=['GET'])
def get_all_task():
    return jsonify(tasks)
    
if __name__ == "__main__":
    if __name__ == "__main__":
    app.run(
        host = "127.0.0.1",
        port = 8989,
        debug = True
        )

启动服务:

python test.py

Curl接口调用测试:

curl -i "http://127.0.0.1:8989/task"

Post请求

Post方式由于需要传递参数,并且有多种不同类型,比如json比如表单等,本文就不细说只是一篇入门;

post json

from flask import abort, jsonify, Flask, request, Response

app = Flask(__name__)

tasks = {
    "data": {
        "loginName": "admin",
        "roles": 1,
        "permissions": 1,
        "active": 1
    },
    "stateCode": {
        "code": 0,
        "desc": "成功"
    },
    "statusText": "成功",
    "timestamp": "1500531770453",
    "success": 1
}

@app.route('/v1/testMock', methods=['GET', 'POST'])
def app_call_back():
    if request.method == 'GET':
        return jsonify(tasks)
    else:
        test_data = request.form['params']
        return jsonify(test_data)

if __name__ == "__main__":
    app.run(
        host = "127.0.0.1",
        port = 8989,
        debug = True
        )

Curl接口调用测试:

curl -d "params=test_mock" "http://127.0.0.1:8989/v1/testMock

Flask让jsonify返回的json串支持中文显示:

默认Flask调用jsonify返回结果是utf8,如果需要返回支持中文显示,只需要在app = Flask(name)下增加一行:

app.config['JSON_AS_ASCII'] = False

参考资料:

https://stackoverflow.com/questions/37531067/how-to-prevent-unicode-representation-for-latin1-characters

http://flask.pocoo.org/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,833评论 19 139
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,725评论 6 427
  • GitHub 上有一个 Awesome - XXX 系列的资源整理,资源非常丰富,涉及面非常广。awesome-p...
    若与阅读 19,008评论 4 418
  • 环境管理管理Python版本和环境的工具。p–非常简单的交互式python版本管理工具。pyenv–简单的Pyth...
    MrHamster阅读 9,247评论 1 61
  • 1、夜间施工产生环境噪声污染的,公告附近居民,抢修、抢险作业和因生产工艺要求或特殊需要必须连续作业的除外。 2、白...
    王信泽阅读 1,373评论 0 0

友情链接更多精彩内容