【接口测试】接口的介绍
1、常见的接口和协议
接口 | 基于或支持的协议 | 描述 | 测试工具 |
---|---|---|---|
Http接口 | Http协议 | 使用广泛、轻量级、跨平台、跨语言的,但凡是第三方提供的API都会有HTTP版本的接口。 | Postman、JMeter等都支持 |
Web Service 接口 | 基于http协议的soap协议的封装和补充 | 是Web Service其实是一种概念,我们可以将以WEB形式提供的服务称为Web Service。 | SoapUI、jmeter、loadrunner |
RESTful | HTTP协议 | 它不是一种规范,而是一种设计准则,用不同的HTTP动词(GET、POST、DELETE、PUT等)来表达不同的请求。 | / |
WebSocket | udp、tcp | 是一个底层的,双向通信协议 ,适合于客户端和服务器端之间信息实时交互 | Jmeter添加插件可以支持 |
FTP | TCP/IP 协议组中的协议之一 | 文件传输协议,FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。 其中FTP服务器用来存储文件 | |
Mqtt | 基于TCP协议 | 客户端-服务器的消息发布/订阅传输协议,适用于物联网 | Jmeter添加插件可以支持、Mqttx |
默认端口
2、HttpServlet类
java通过HttpServlet类可以实现接口的自动化测试、模拟发送接口请求等
public class ServletDemo extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("执行了post方法"); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("执行了get方法"); } }
3、接口常见的请求方式:
Get: 像服务器获取资源,特点是参数在URL上,不安全,且最多1024字节 Post:像指定的服务器提交数据请求处理,一般是提交表单、上传文件,有消息体,可以携带大量数据且安全 Put:和Post的区别在于它是idempotent(幂等)的,即多次运行结果一样 Head:与get区别就在于只获取head信息 Delete:删除对应的URl上的资源 Option:获取当前URL所支持的方法,如果请求成功,会在Http头部中有一个名为“Allow”的头,显示支持的方法,如“Get,Post” Trace:查看Http请求报文发送的过程当中是否被修改
3.1、get和post的区别:
-
url可见性:
get,参数url可见;
post,url参数不可见 -
数据传输上:
get,通过拼接url进行传递参数;
post,通过body体传输参数 -
缓存性:
get请求是可以缓存的
post请求不可以缓存 -
后退页面的反应
get请求页面后退时,不产生影响
post请求页面后退时,会重新提交请求 -
传输数据的大小
get一般传输数据大小不超过2k-4k(根据浏览器不同,限制不一样,但相差不大)
post请求传输数据的大小根据php.ini 配置文件设定,也可以无限大。 -
安全性
原则上post肯定要比get安全
-
数据包
GET产生一个TCP数据包;POST产生两个TCP数据包。对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
4、状态码:
2xx(表示请求成功) 一般常用的有 200 成功,通常服务器提供了网页资源 201 请求成功并且已创建, 202 已接受但是还没处理
3xx(请求被重定向,需要进一步处理) 301:(网页永久移动了) 302:(临时移动了) 304:(未修改,返回此相应不会返回网页内容)
4xx:(请求错误) 400:(错误请求,服务器不理解) 401:(未授权,比如没有token) 403:(禁止,服务器拒绝请求) 404:(没找到资源)
5xx:(服务器错误) 500:(服务器内部错误,无法完成请求) 503:(服务不可用,服务器崩了或者停机维护,暂时的)
5、header:
User-agent:客户端操作系统和浏览器名称和版本 Accept-Charset: 浏览器接受的字符集 Accept-Encoding: 浏览器申明自己的编码方式和压缩方式,是否支持压缩,用什么压缩 Accept-Lanuguage:申明自己接受的语言 Content-Length:发送Http服务器数据长度 Content-Type:互联网媒体类型
Content-Type:POST请求的消息主体放在entity body中,服务端根据请求头中的Content-Type字段来获取消息主体的编码方式,进而进行解析数据。
常见类型:
application/x-www-form-urlencoded # 表单提交 multipart/form-data:# 另一个常见的 POST 数据提交的方式, Form 表单的 enctype设置为multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符(这就是boundary的作用)分开。 application/json:# 用来告诉服务端消息主体是序列化后的 JSON 字符串 text/xml:# XML的作用不言而喻,用于传输和存储数据,它非常适合万维网传输, binary (application/octet-stream):# 就是一些二进制文件类型,如application/pdf,指定了特定二进制文件的MIME类型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律