zoukankan      html  css  js  c++  java
  • flask微服务框架的初步接触

      测试2个关联的系统接口时,经常会遇到被测试系统或被测app的处理内部处理流程会依赖另一个系统的接口返回结果,这时,
    常用的做法就是写一个模拟测试桩,用作返回请求时的结果。java可以用servicelet来实现,而python可以使用flask这个框架来实现,
    并且,实现起来也比java相对简单一些。

    编程语言的永远第一个示例,hello world

    from flask import Flask, request    #安装 flask和flask_restful 包
    from flask_restful import Api, Resource

    app=Flask(__name__) #实例化,__name__为系统变量
    api=Api(app) #restful API的固定写法
    class HiWorld(Resource): #创建一个类,并继承flask_restful.Resource;定义为一个资源
    def get(self):
    return {'Hello':'World'}

    api.add_resource(HiWorld,'/Hello_World/a') #将HiWorld类作为数据资源加入到api,‘/Hello_World’为请求资源地址
    if __name__=="__main__":
    app.run(host='0.0.0.0',port='8585',debug=True) #host='0.0.0.0'表示开放其他机器访问权限,debug=True表示打印调试日志,port为访问端口号
                                    #请求默认地址http://127.0.0.1:5000

    示例二:多个请求资源
    from flask import Flask
    from flask_restful import Api,Resource,reqparse,abort

    app=Flask(__name__)
    api=Api(app)

    todos={
    'todo1':{'task':'welcome'},
    'todo2':{'task':'to'},
    'todo3':{'task':'school'}
    }

    def abort_if_todo_unexist(todo_id): #请求的资源不在todos变量中,返回404
    if todo_id not in todos:
    abort(http_status_code=404,message="todo{}doesn't exsit".format(todo_id)) #abort提前退出请求,并返回http状态码404

    parser=reqparse.RequestParser() #解析url中参数
    parser.add_argument('task',type=str)

    #todo
    class Todo(Resource):
    def get(self,todo_id): #请求时get的方法,根据url中参数获取资源
    abort_if_todo_unexist(todo_id)
    return todos[todo_id]
    def delete(self,todo_id): #请求时delete的方法,根据url中参数删除资源
    abort_if_todo_unexist(todo_id)
    del todos[todo_id]
    return '',204
    def put(self,todo_id): #请求时put的方法,根据url中参数修改资源
    args=parser.parse_args()
    task={'task':args['task']}
    todos[todo_id]=task
    return task,201

    #todolist
    class Todolist(Resource):
    def get(self): #请求时get的方法,url没有带参数时,返回所有变量todos的值
    return todos
    def post(self): #请求时post的方法,url没有带参数时,新增todos[todo_id]的值
    args=parser.parse_args()
    todo_id=int(max(todos.keys()).lstrip('todo'))+1
    todo_id='todo%i'%todo_id
    todos[todo_id]={'task':args['task']}
    return todos[todo_id],201

    api.add_resource(Todolist,'/todos/')
    api.add_resource(Todo,'/todos/<todo_id>') #<todo_id>为传入的参数

    if __name__=='__main__':
    app.run(host='0.0.0.0',port='8585',debug=True)








  • 相关阅读:
    使用 Eclipse PhoneGap 构建 Android 应用程序入门
    SSAS系列——【01】准备知识
    HDU 5763 Another Meaning 2016多校第四场1001 KMP+DP
    HDU 5794 A Simple Nim 2016多校第六场1003
    HDU 5758 Explorer Bo 2016多校第三场1007 树上DP
    HDU 5755 Gambler Bo 2016多校第三场1004
    HDU 5754 Life Winner Bo 2016多校第三场1003
    vue2.0引入腾讯地图
    MVC Razor模板引擎输出HTML或者生产HTML文件
    慎把“DataContext”静态化 或则单例
  • 原文地址:https://www.cnblogs.com/whitemouseV2-0/p/10769888.html
Copyright © 2011-2022 走看看