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)
flask微服务框架的初步接触的更多相关文章
- 基于.NET CORE微服务框架 -谈谈surging API网关
1.前言 对于最近surging更新的API 网关大家也有所关注,也收到了不少反馈提出是否能介绍下Api网关,那么我们将在此篇文章中剥析下surging的Api 网关 开源地址:https://git ...
- spring cloud 入门,看一个微服务框架的「五脏六腑」
Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 注:Spring Boot 简单理解就是简化 Spring 项目的搭建.配置.组 ...
- 从 Spring Cloud 看一个微服务框架的「五脏六腑」
原文:https://webfe.kujiale.com/spring-could-heart/ Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构 ...
- go微服务框架go-micro深度学习(一) 整体架构介绍
产品嘴里的一个小项目,从立项到开发上线,随着时间和需求的不断激增,会越来越复杂,变成一个大项目,如果前期项目架构没设计的不好,代码会越来越臃肿,难以维护,后期的每次产品迭代上线都会牵一发而动全身.项目 ...
- 微服务框架go-micro
微服务框架go-micro https://www.cnblogs.com/li-peng/p/9558421.html 产品嘴里的一个小项目,从立项到开发上线,随着时间和需求的不断激增,会越来越复杂 ...
- Dubbo Ecosystem - 从微服务框架到微服务生态
从微服务框架到微服务生态,这是微服务发展的必然趋势,也是Dubbo社区满足开发者更高效的构建微服务体系期望的使命和担当. 近期,Apache Dubbo PPMC 望陶(社区昵称:ralf0131)做 ...
- # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)
目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...
- 微服务框架Demo.MicroServer运行手册
一.背景说明: 之前分享过一个微服务开发框架, "享一个集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionle ...
- 推荐一款 Python 微服务框架 - Nameko
1. 前言 大家好,我是安果! 考虑到 Python 性能及效率性,Python Web 端一直不温不火,JAVA 和 Golang 的微服务生态一直很繁荣,也被广泛用于企业级应用开发当中 本篇文章 ...
随机推荐
- css clip-path的polygon属性绘制多边形
通过设置多个点的坐标位置来绘制图形的形状 .box{ clip-path:polygon(x1 y1, x2 y2, x3 y3, , , , , ,) backgroud-color:red; }
- 利用Centos服务器来搭建自己的splash,不再被安装的各种环境繁琐而担忧
Centos7.5 ----- docker ------- splash 第一步:服务器环境的配置 第二步:dcoker环境的配置 ...
- Three teachers who make differences in my life
人生路漫漫,从小到大,经历过九年义务教育的我们也受到过很多老师的熏陶,而已经进入大学的我也会回想起那些给我带来别样意义的老师们. 亲爱的老李-老李是我初中的班主任,也是我的历史老师.依稀记得上他的课会 ...
- 金蝶k/3 K3云之家消息查询发送是否成功SQL语句
金蝶k/3 K3云之家消息查询发送是否成功SQL语句 1是成功,0是还在轮询中未发送,4是发送失败 select * into #tempUserID from ( union select t_Gr ...
- Redis数据类型String
set和get Set带空格的字符串值,这时候就需要使用双引号了,否则会出错 getset getset设置某个key-value,然后把设置之前的值返回来 incr,incrby 和 decr,de ...
- EF执行SQL返回动态类型
using System; using System.Data.Common; using System.Data.Entity.Core.Objects; using System.Data.Ent ...
- 使用Redis构建全局并发锁
谈起Redis的用途,小伙伴们都会说使用它作为缓存,目前很多公司都用Redis作为缓存,但是使用Redis仅仅作为缓存未免太大材小用了.深究Redis的原理后你会发现它有很多用途,在很多场景下能够使用 ...
- Java 实现视频下载功能
public static boolean httpDownload(String httpUrl, String saveFile) { // 1.下载网络文件 int byteRead; URL ...
- weblogic 安装部署详解
0x01 weblogic下载安装 去Oracle官网下载Weblogic 10.3.6,选择Generic版本,各版本选择下载地址:http://www.oracle.com/technetwork ...
- zepto.js移动端城市选择插件
http://sc.chinaz.com/jiaoben/170327301850.htm