接口测试遇到500报错?别慌,你的头部可能有点问题

news2024/9/19 10:49:35

 🔥 交流讨论:欢迎加入我们一起学习!

🔥 资源分享耗时200+小时精选的「软件测试」资料包

🔥 教程推荐:火遍全网的《软件测试》教程  

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

问题:接口的入参、地址、请求方式都设置对了,但是请求仍返回500,报系统错误是为啥?

在日常进行接口测试过程中,我们都知道一个完整的接口HTTP请求一般包括四大部分:请求信息头、请求体、响应信息头、响应体、请求方式(post/get等)。在进行测试时我们比较关心的是请求入参,也就是请求体的信息,从而忽略了请求信息头的重要性。若是未正确定义信息头,会导致接口请求失败。

本文主要带大家简单了解下信息头的作用。Jmeter提供了HTTP Header Manager信息头管理器,用于定义规范客户端和服务端之间HTTP接口请求的默认规范。

注意:HTTP 的请求方式有 8 种,但是我们在实际应用中常用的也就是 get 和 post,其他请求方式也都可以通过这两种方式间接的来实现。

常用的标准

常用的HTTP接口请求头字段有如下:

l Accept

设置接受的内容类型

l User-Agent

用户代理的字符串值,一般用于告诉服务器客户端使用的操作系统/浏览器的名称和版本等信息

l Content-Type

设置请求体的MIME类型(适用POST和PUT请求),告诉客户端实际返回的内容的内容类型,常用application/json;charset=UTF-8,定义接口响应返回的数据是json格式,编码格式是UTF-8。

l Content-Length

设置请求体的字节长度

l Accept-Encoding

设置接受的编码格式

l Accept-Language

设置接受的语言

l Origin

标识跨域资源请求(请求服务端设置Access-Control-Allow-Origin响应字段)

l Referer

设置前一个页面的地址,并且前一个页面中的连接指向当前请求,意思就是如果当前请求是在A页面中发送的,那么referer就是A页面的url地址

l Cookie

Cookie是远程服务端返回的识别用户身份信息,该信息存储在客户端,客户端每次进行操作时,会通过HTTP协议和服务器端进行Cookie的交互,验证身份信息正确才可交互成功(大多数需要登录后操作的接口上面会比较常见)。

l Set-Cookie

设置HTTP Cookie,用来存储一些用户信息以便让服务器辨别用户身份的,一般是服务端返回的用户身份信息(大多数需要登录的接口上面会比较常见)

......

Header信息获取方式
接口的信息头到底定义了哪些内容,可以通过以下渠道获得:

1. 开发提供接口文档

2. 通过抓包工具charles抓取查看Request的Headers

下图为方式2,通过抓包工具查看到的某接口的请求信息头(Request-Headers)

实践

目标:某系统登录接口已定义响应数据(Response)返回的格式是json格式,使用jmeter的HTTP Request、HTTP Header Manager成功实现登录。

配置

菜单路径

配置内容:

从抓包工具charles上可获取到接口需要定义Content-Type:application/json;charset=UTF-8(响应数据为json格式,编码方式为UTF-8)

 

未定义信息头

下图中POST方式的登录接口未设置HTTP Header Manager,运行jmeter脚本发起接口请求时默认Content-Type:text/plain(纯文本格式),所以请求会报错,返回状态码500。

正确定义信息头

正确定义信息头:Content-Type:application/json

信息头配置正确后,运行jmeter脚本接口请求成功,返回状态码200。

其他常见的媒体格式

text/html :HTML格式

text/plain :纯文本格式

text/xml :XML格式

application/xhtml+xml :XHTML格式

application/xml:XML数据格式

application/json:JSON数据格式

......

本文仅分享由于请求信息头(Headers)未定义而引起的错误码500,不排除其他原因引起。
 

最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SSE[Server-Sent Events]实现页面流式数据输出(模拟ChatGPT流式输出)

文章目录 前言SSE 简介应用场景区分浏览器支撑性 实现过程Web VUE核心解析数据代码实例demo参考 前言 服务端向客户端推送消息,除了用WebSocket可实现,还有一种服务器发送事件(Server-Sent Events)简称 SSE,这是一种服务器端到客户端(浏览器)…

idea上传本地项目到gitlab

1. idea上传本地项目到gitlab 1. 配置idea里本地安装的git位置 即选择 Settings -> Version Control -> Git -> Path to Git executable 2. 在idea创建本地仓库 即选择 VCS -> Create Git Repository 然后选择目录,默认就是选择的当前项目&#xff…

(学习日记)2024.01.19

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

C和指针课后答案

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 第八章课后答案 提示:以下是本篇文章正文内容,下面案例可供参…

ISA Server 2006部署网站对比nginx

2024年了,我还是第1次使用ISA Server 。没办法在维护一个非常古老的项目。说到ISA Server可能有小伙们不清楚,但是说到nginx大家应该都知道吧。虽然他们俩定位并不相同,但是本文中提到的需求,他俩是都可以实现。 网上找的到的教程…

全网最详细丨2024年AMC8真题及答案来了

目录 前言 真题回忆 真题解析 结尾 前言 相信大家都已经知道今年AMC8出事情了吧,但最重要的还是要从中学到新知识。 听说今年考生被提前12分钟强制交卷了,肯定因为试题泄露了。 最新回复:我们这边已经退费了 真题回忆 需要word文档的请…

基于JavaWeb+SSM+Vue基于微信小程序的网上商城系统的设计和实现

基于JavaWebSSMVue基于微信小程序的网上商城系统的设计和实现 滑到文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 滑到文末获取源码 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想…

应届生必读:Java真实项目的开发流程和常用工具

目录 1 接需求和前期设计 2 敏捷开发模式 3 开发、测试与测试环境 4 项目部署细节说明 5 监控系统,解决线上问题 6 项目管理和部署工具 7 代码管理工具 8 Java项目开发的常用组件 9 测试类工具 10 数据库服务器及其客户端组件 11 linux连接组件 12 总结…

Helm Dashboard — Kubernetes 中管理 Helm 版本的 GUI

Helm Dashboard 通过提供图形用户界面,使在 Kubernetes 中管理 Helm 版本变得更加容易,这是许多开发人员所期望的。它可用于在 Kubernetes 中创建、部署和更新应用程序的版本,并跟踪其状态。 本文将探讨 Helm Dashboard 提供的特性和优势&am…

鸿蒙 HarmonyOS ArkTS ArkUI 动画 中心扩展、向下扩展、纵向扩展

EntryComponentstruct Index {State widthA: number 0State heightA: number 0onPageShow():void{animateTo ( {duration: 2000,iterations: -1,curve:Curve.Linear}, () > {this.widthA 200this.heightA 200} )}build() {Column() {// 中心扩展Column(){}.width(this.wi…

二叉树基础oj题目

二叉树基础oj题目及思路总结 前文中,介绍了二叉树的基本概念及基础操作,进一步对于二叉树的递归遍历及子问题的处理思想有了一定的了解。本文将带来几道二叉树经典的oj题目。 目录 二叉树基础oj题目 对称二叉树平衡二叉树二叉树的层序遍历 二叉树基…

(C语言)编译和链接

前言͟͟͞͞💌:对于现在的各种编译器而言许多都是好多个功能的集成,那么我们的代码到底是如何去实现的呢?难道我们的计算机可以直接读懂我们所写的代码,并运行吗?对于很多细心的小伙伴们可能会想这样的问题…

强缓存、协商缓存(浏览器的缓存机制)是么子?

文章目录 一.为什么要用强缓存和协商缓存?二.什么是强缓存?三.什么是协商缓存?四.总结 一.为什么要用强缓存和协商缓存? 为了减少资源请求次数,加快资源访问速度,浏览器会对资源文件如图片、css文件、js文…

Spring DI

目录 什么是依赖注入 属性注入 构造函数注入 Setter 注入 依赖注入的优势 什么是依赖注入 依赖注入是一种设计模式,它通过外部实体(通常是容器)来注入一个对象的依赖关系,而不是在对象内部创建这些依赖关系。这种方式使得对象…

【Python学习】Python学习21- 正则表达式(2)

目录 【Python学习】Python学习21- 正则表达式(2) 前言字符串检索和替换repl 参数是一个函数参考 文章所属专区 Python学习 前言 本章节主要说明Python的正则表达式。 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与…

『 C++ - STL』map与set的封装 ( 万字 )

文章目录 🎡 map与set介绍🎡 map与set的基础结构🎡 红黑树的再修改🎠节点及树的定义🎠KeyOfValue的使用🎠插入函数🎠析构函数🎠红黑树完整代码(供参考) 🎡 迭代器的实现&…

【C++】—— C++的IO流

在C中,I/O流是一项关键的编程概念,为程序提供了与外部世界进行交互的重要手段。通过使用C的强大I/O库,开发者能够实现对标准输入输出、文件、字符串等多种数据源的高效处理。接下来让我们深入探讨C的I/O流,了解其基本原理、常见操…

基于动态顺序表实现通讯录项目

本文中,我们将使用顺序表的结构来完成通讯录的实现。 我们都知道,顺序表实际上就是一个数组。而使用顺序表来实现通讯录,其内核是将顺序表中存放的数据类型改为结构体,将联系人的信息存放到结构体中,通过对顺序表的操…

GO 中高效 int 转换 string 的方法与高性能源码剖析

文章目录 使用 strconv.Itoa使用 fmt.Sprintf使用 strconv.FormatIntFormatInt 深入剖析1. 快速路径处理小整数2. formatBits 函数的高效实现 结论 Go 语言 中,将整数(int)转换为字符串(string)是一项常见的操作。 本文…

数据库-数据库分类

数据库可以分为关系型数据库和非关系型数据库,常见的数据库如下 关系型数据库 关系型数据库是一种采用关系模型来组织数据的数据库,它以行和列的形式存储数据,以便于用户理解。关系型数据库中的数据以二维表的形式组织,被称为表…