学习使用Flask模拟接口进行测试

  • 前言

学习使用一个新工具,首先找一段代码学习一下,基本掌握用法,然后再考虑每一部分是做什么的

  • Flask的初始化

app = Flask(__name__):初始化,创建一个该类的实例,第一个参数是应用模块或者包的名称

  • @app.route()的用法

@app.route('/detect', methods=['POST']):通过使用route()装饰器的方法定义一个路由地址,/detect是接口的uri,使用 route() 装饰器告诉 Flask 什么样的URL能触发我们的函数,这个函数的名字也在生成 URL 时被特定的函数采用,这个函数返回我们想要显示在用户浏览器中的信息;methods=['POST']表示只接受POST方法访问,methods=['GET']表示只接受GET方法访问,methods=['POST', 'GET']表示两种方法都接受。

  • app.run的用法

app.run(host='0.0.0.0', port=1000,debug=True):用 run() 函数来让应用运行在本地服务器上。其中host为要监听的主机名, 默认为127.0.0.1(localhost),设置为“0.0.0.0”以使服务器在外部可用,port是设置的端口号,port不填的话默认5000,debug默认为false,如果设置为true,则提供调试信息;若是在docker中使用,记得docker要把对应的端口映射到主机;

  • python和flask中返回JSON数据的方法如下:

字典转化为JSON的数据格式:return json.dumps(result_dict,ensure_ascii=False) #result_dict为字典数据,使用json转换的在前端显示的数据为JSON字符串;

使用flask的jsonify转换后,在前台显示的为JSON对象:return jsonify(result_dict)

  • 快速启动一个flask接口

使用这个环境

//略,这里涉及到工作环境了

在这个目录下:(使用python3)

/home/work/miniconda3/envs/bfc38/bin

实操:

 

from flask import Flask

app = Flask(__name__)

@app.route('/')

def index():

return 'hello flask!'

if __name__ == '__main__':

app.run(host='0.0.0.0', port=8877, debug=True)

复制地址拿到浏览器里跑一下,出现hello flask说明跑通了

运行过程中修改文件出现语法错误,会导致脚本终止

切换请求路径:

  • 详解flask接口测试

首先需要引入request包

from flask import request

  • 如何关闭一个flask脚本

ps -af | grep python

找到对应进程的PID,然后使用kill PID杀掉对应的进程即可

注:这里的第二列就是PID,通过查看该进程对应的文件确定哪个是目标进程

(后续应该要系统学习一下linux的相关用法,倒不是不会用,就是不太熟)

1、需要对请求头进行测试

使用request.header获取请求头中的数据,比如请求头里面有一个test参数,那就是

args = request.header -- 这一步相当于取得了全部的请求头

之后,使用args.get("test")取得test这个key里面的值

test里面可以替换成任意请求头,其实就是一个字典(or map),用get取得key对应的value就可以了,下面的其他情况同理

2、需要对请求体进行测试
  • 默认的表单(application/x-www-form-urlencoded)使用request.form ;

  • 如果是json(application/json): request.json取出所有的键值对

具体哪种需要看请求头中的Conternt-Type 当然也有可能是其他的,下面补充一下常见的http请求数据类型(Content-Type)

Content-type 定义了 http 请求的数据类型。

如果设置在请求头中,则定义的是请求体的数据类型;

如果设置在响应头中,则定义的是响应体的数据类型;

请求头--Request-Headers:一般我们在 post 请求中会向服务器发送一些参数,那我们就可以通过这个参数设置 post 的参数格式

application/json:JSON 数据格式;

application/x-www-form-urlencoded:表单默认的提数据格式;

multipart/form-data:一般用于文件上传;

响应头--Response-Headers:响应头里的 Content-Type 参数会告诉我们响应数据的格式,一般我们可以在请求头里面设置我们想要的数据格式(Accept);

以下是常见的Content-Type:

text开头

text/html: HTML格式

text/plain:纯文本格式

text/xml: XML格式

图片格式

image/gif :gif 图片格式

image/jpeg :jpg 图片格式

image/png:png 图片格式

application开头

application/xhtml+xml:XHTML 格式

application/xml:XML 数据格式

application/atom+xml:Atom XML 聚合格式

application/json:JSON 数据格式

application/pdf:pdf 格式

application/msword:Word 文档格式

application/octet-stream:二进制流数据(如常见的文件下载)

application/x-www-form-urlencoded:表单发送默认格式

媒体文件

audio/x-wav:wav文件

audio/x-ms-wma:w文件

audio/mp3:mp3文件

video/x-ms-wmv:wmv文件

video/mpeg4:mp4文件

video/avi:avi文件

3、需要对url中附带的请求参数进行测试

请求参数是指

http://127.0.0.1:5000/query?id=1 里面的 「?id=1」这部分

需要用request.arg提取这部分参数,之后的处理和第一条一样

示例

 

@app.route('/query') # http://127.0.0.1:5000/query?id=1&name=zhangsan

def query():

args = request.args # args 请求的参数

args_dict = args.to_dict() # 获取请求参数 字典格式

name = args.get('name')

print(args) # [('id', '1'), ('name', 'zhangsan')]

print(args_dict) # {'id': '1', 'name': 'zhangsan'}

print(name) # zhangsan

return '查询参数== 姓名:%s' % name

4、获取固定参数
 

@app.route('/fixed/<int:id>/<name>')

def fixed(id, name):

print(id)

print(name)

return '固定参数'

5、补充

可供参考

Flask基础:请求数据获取与响应_flask获取前端数据-CSDN博客

Flask中获取参数(路径,查询,请求体,请求头)-CSDN博客

基于Flask进行接口开发及测试_chrome测试 flask接口-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/358885.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

webassembly003 TTS BARK.CPP-02-bark_tokenize_input(ctx, text);

bark_tokenize_input函数 bark是没有语言控制选项的&#xff0c;但是官方的版本无法运行中文bark_tokenize_input会调用bert_tokenize函数&#xff0c;bark_tokenize_input函数对中文分词失效&#xff0c;也就是导致不支持中文的原因。 void bark_tokenize_input(struct bark_…

Mybatis Plus轻松实现数据库变更全局审计日志

Mybatis Plus轻松实现数据库变更全局审计日志 Mybatis Plus轻松实现数据库变更全局审计日志引言实现审计日志1.创建审计日志表2.创建AuditLogAspect用于记录请求日志4. 保存审计日志 总结 Mybatis Plus轻松实现数据库变更全局审计日志 引言 在日常的业务开发中&#xff0c;监…

MySQL十部曲之一:MySQL概述及手册说明

文章目录 数据库、数据库管理系统以及SQL之间的关系关系型数据库与非关系型数据库MySQL程序系统变量系统状态变量SQL模式MySQL数据目录手册语法约定 数据库、数据库管理系统以及SQL之间的关系 名称说明数据库&#xff08;Database&#xff09;即存储数据的仓库&#xff0c;其本…

07. STP的基本配置

文章目录 一. 初识STP1.1. STP概述1.2. STP的出现1.3. STP的作用1.4. STP的专业术语1.5. BPDU的报文格式1.6. STP的选择原则&#xff08;1&#xff09;选择根桥网桥原则&#xff08;2&#xff09;选择根端口原则 1.7. 端口状态1.8. STP报文类型1.9. STP的收敛时间 二. 实验专题…

数据结构——并查集

1.并查集的定义 并查集其实也是一种树形结构&#xff0c;在使用中通常用森林的方式来表示 并查集的逻辑结构其实就是集合 并查集一般可以通过双亲写法&#xff08;顺序结构&#xff09;来完成&#xff0c;即通过一个数组存储父亲结点的下标 int s[10005]; int main() {for(…

原来服务器这么有用-使用轻量应用服务器搭建专属自己PDF处理工具

原来服务器这么有用-使用轻量应用服务器搭建专属自己PDF处理工具 1、前言 PDF文件是日常办公中经常使用的一种文档格式。最近&#xff0c;青阳面临一个问题&#xff1a;某公司发送过来的文件需要我们进行印章流程&#xff0c;但由于该公司系统在电子文件加盖电子公章后会自动…

万户 ezOFFICE wpsservlet SQL注入漏洞复现

0x01 产品简介 万户OA ezoffice是万户网络协同办公产品多年来一直将主要精力致力于中高端市场的一款OA协同办公软件产品,统一的基础管理平台,实现用户数据统一管理、权限统一分配、身份统一认证。统一规划门户网站群和协同办公平台,将外网信息维护、客户服务、互动交流和日…

10V单通道负载开关

概述 EM5220是一款单通道负载开关&#xff0c;具有可编程上升时间和集成输出放电控制。该设备包含一个P沟道NOSFET&#xff0c;可以通过输入进行操作电压范围为4.5V至10V。开关由接通和断开低电平逻辑输入控制&#xff0c;其能够与GPIO信号接口。设备的可编程上升时间可以减少…

代码随想录刷题笔记-Day15

1. 完全二叉树的的节点个数 222. 完全二叉树的节点个数https://leetcode.cn/problems/count-complete-tree-nodes/ 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没…

课时7:shell基础_shell简介

1.3.1 shell简介 学习目标 这一节&#xff0c;我们从 运维、shell语言、小结 三个方面来学习。 运维 简介 运维是什么&#xff1f;所谓的运维&#xff0c;其实就是公司的内部项目当中的一个技术岗位而已&#xff0c;它主要做的是项目的维护性工作。它所涉及的内容范围非常…

Redhat 8.4 一键安装 Oracle 11GR2 单机版

Oracle 一键安装脚本&#xff0c;演示 Redhat 8.4 一键安装 Oracle 11GR2 单机版过程&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地址&#xff1a;Shell脚本安装Oracle数据库 脚本…

插接母线温度在线监测系统研究与应用

摘要&#xff1a;低压封闭式插接母线是供配电设施的关键部件&#xff0c;安装在生产车间内部高空&#xff0c;不易保养和维护&#xff0c;在安装不良或保养不当时易发生故障。插接点温度的异常变化与母线故障的发生有着密切的关系&#xff0c;以汽车整车制造工厂为例&#xff0…

Unity 策略模式(实例详解)

文章目录 简介示例1&#xff1a;角色攻击行为示例2&#xff1a;游戏内购折扣策略示例3&#xff1a;NPC寻路策略示例4&#xff1a;动画过渡策略示例5&#xff1a;敌人AI决策策略 简介 在Unity中使用策略模式&#xff0c;我们可以将不同的行为或算法封装成独立的类&#xff08;策…

SpringMVC 自动配置

SpringMVC 自动配置 一、WebMvcAutoConfiguration&#xff08;SpringMVC自动配置&#xff09;二、DisPatcherServletAutoConfiguration.class&#xff08;中央调度器自动配置&#xff09;三、WebMvcConfigurationSupport&#xff08;SpringMVC组件配置类&#xff09;四、Servle…

iOS 17.4 苹果公司正在加倍投入人工智能

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

网络隔离场景下访问 Pod 网络

接着上文 VPC网络架构下的网络上数据采集 介绍 考虑一个监控系统&#xff0c;它的数据采集 Agent 是以 daemonset 形式运行在物理机上的&#xff0c;它需要采集 Pod 的各种监控信息。现在很流行的一个监控信息是通过 Prometheus 提供指标信息。 一般来说&#xff0c;daemonset …

低功耗蓝牙(BLE) 和 经典蓝牙(SPP) 的区别

低功耗蓝牙(BLE) vs 经典蓝牙(SPP) 区别项低功耗蓝牙(BLE)经典蓝牙(SPP 串行端口协议)蓝牙版本蓝牙版本 > 4.0&#xff0c;又称蓝牙低功耗、蓝牙智能经典蓝牙2.0 或更早版本&#xff0c;经典配对模式在两台蓝牙设备之间建立虚拟串口数据连接&#xff0c;提供一种简单而直接…

06.VLAN、Trunk和Hybrid配置

文章目录 一. 初识VLAN1.1. VLAN概述1.2. VLAN的优势1.3. VLAN的帧格式1.4. 接口链路类型1.5. 默认VLAN1.6. VLAN划分方式 二. 实验题2.1. 实验1&#xff1a;划分VLAN2.1.1. 实验目的2.1.2. 实验拓扑图2.1.3. 实验步骤&#xff08;1&#xff09;配置PC机的IP地址&#xff08;2&…

stable diffusion学习笔记——文生图(二)

LORA和Embeddings都可以对画面内容进行调整。目前LORA主要用来定义画面特征&#xff0c;如具体的人物&#xff0c;衣物&#xff0c;画风等。Embeddings目前主要用于反面提示词中&#xff0c;用来避免错误的画面表现。 LORA lora的全称为&#xff1a;低秩适应模型。lora的基本…

05. 交换机的基本配置

文章目录 一. 初识交换机1.1. 交换机的概述1.2. Ethernet_ll格式1.3. MAC分类1.4. 冲突域1.5. 广播域1.6. 交换机的原理1.7. 交换机的3种转发行为 二. 初识ARP2.1. ARP概述2.2. ARP报文格式2.3. ARP的分类2.4. 免费ARP的作用 三. 实验专题3.1. 实验1&#xff1a;交换机的基本原…