网站首页 > 技术文章 正文
问题:接口的入参、地址、请求方式都设置对了,但是请求仍返回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,不排除其他原因引起。
猜你喜欢
- 2024-11-06 JavaScript学习笔记(二十五)——HTTP
- 2024-11-06 原生js实现文件下载并设置请求头header
- 2024-11-06 干货-Http请求get、post工具类(get和post请求的区别是什么)
- 2024-11-06 聊聊在springcloud gateway如何获取请求体
- 2024-11-06 python接口自动化-发送get请求(python get请求 url传参)
- 2024-11-06 想测试HTTP响应不知道如何开展怎么办?
- 2024-11-06 一文讲清HPP的请求方法和过程(hp partsufer)
- 2024-11-06 HTTP请求对象(获取用户请求信息)(如何查看http请求的头部信息)
- 2024-11-06 学习笔记-HTTP 请求方法详解(学习笔记-HTTP 请求方法详解pdf)
- 2024-11-06 Servlet的创建和获取Get请求数据(如何在servlet中获取请求参数)
- 最近发表
-
- 使用Knative部署基于Spring Native的微服务
- 阿里p7大佬首次分享Spring Cloud学习笔记,带你从0搭建微服务
- ElasticSearch进阶篇之搞定在SpringBoot项目中的实战应用
- SpringCloud微服务架构实战:类目管理微服务开发
- SpringBoot+SpringCloud题目整理
- 《github精选系列》——SpringBoot 全家桶
- Springboot2.0学习2 超详细创建restful服务步骤
- SpringCloud系列:多模块聚合工程基本环境搭建「1」
- Spring Cloud Consul快速入门Demo
- Spring Cloud Contract快速入门Demo
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)