今天给大家盘点面试过程中被问频率较高的接口测试相关面试题,注意此篇仅限接口测试基础
一.常见的HTTP请求方式有哪些?GET:发送一个请求来获取服务器上的某一资源,多用于查询数据(如列表查询);
POST:将数据添加到服务器中的现有文件或资源(如提交表单或者上传文件),POST 请求可能会导致新的资源的建立或已有资源的修改;
HEAD:响应与 GET 请求相同,但没有响应正文;
PUT:替换服务器中的现有文件或资源,多用于向指定资源位置上传最新内容(如修改评价或笔记);
DELETE:从服务器中删除数据(如取消收藏或删除评价);
PATCH:是对 PUT 方法的补充,用于对资源进行局部更新;
OPTIONS:用于描述目标资源的通信选项;
CONNECT:HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器;
TRACE:回显服务器收到的请求,主要用于测试或诊断;
• GET 方法一般是指获取服务器上的数据,通过地址栏传输,请求参数(query string 查询字符串)
直接跟着 URL 后,以?分割 URL 和传输数据,参数之间以&相连(?name=coco&pwd=123)的形式,直接可以放到浏览器地址栏里,如登录就是采用 GET 方法(name=coco&password=123&verify=%E4%BD%A0%E5 %A5%BD)。
如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用 base64 加密,得出如:%E4 %BD%A0%E5%A5%BD,其中%XX 中的 XX 为该符号以 16 进制表示的 ASCII。
• POST 方法是指客户端给服务器上提交表单数据,通过报文传输,会把数据放到请求数据字段中以&分隔各个字段
请求行不包含数据参数,地址栏也不会额外附带参数,所以 POST 是通过表单提交的,请求参数放在 body 中,如网页上的新用户的注册、调查问卷和答题就是采用 POST 方法。
提交数据的大小/长度:• GET 是直接在浏览器地址栏输入,直接影响到了 URL 的长度,但 HTTP 协议规范中其实是没有对 URL 限制长度的,限制 URL 长度的是客户端或服务器的支持的不同所影响:
比如 IE 对 URL 长度的限制是 2083 字节(2K+35)。对于其他浏览器,如 Netscape、FireFox 等,理论上没有长度限制,其限制取决于操作系统的支持。由于浏览器有限制,一般整个 URL 的长度可以很长,但是不能超过 2049KB 的大小限制,而 POST 没有大小限制。
• POST 方式 HTTP 协议规范中也没有限定,起限制作用的是服务器的处理程序的处理能力。所以大小的限制还是得受各个 web 服务器配置的不同而影响。
提交数据的安全性:• 由于 GET 的参数是在浏览器地址栏 URL 直接拼接,用户名和密码将明文出现在 URL 上,暴露在互联网中,安全性差,不能用来传递敏感信息。
• POST 请求参数放在 Body 里,是通过表单数据提交,POST 比 GET 方式的安全性要高
编码方式:• GET 的参数只能支持 ASCII;
• POST 没有限制,也允许二进制数据;
请求方式:• GET 是获取指定的资源 ;
• POST 是向指定的资源提交要被处理的数据 ;
请求体:• GET 没有请求体;
• POST 有请求体;
效率方面:• GET 产生一个 TCP 数据包;
• POST 产生两个 TCP 数据包,POST 需要两步,时间上消耗要多一点,GET 比 POST 更有效;
请求过程:• 对于 GET 方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应 200(返回数据)
• POST 方式的请求,浏览器先发送 header,服务器响应 100 continue,浏览器再发送 data,服务器响应 200 ok;
三.HTTP请求特点?基于请求/响应,支持客户端/服务器模式:
客户端发送请求,服务器端响应数据。客户端向服务器请求服务时,只需要传送请求的方法和路径即可。常用的请求方法有 GET(查)、POST(增),除此之外还有 PUT(改)、DELETE(删)等,每种方法规定的客户端与服务器联系的方式不同,日常工作中见到的最多的是 GET 和 POST 两种。
基于 TCP/IP 协议之上的应用层协议,简单灵活:
HTTP 简单,服务器的程序规模小,通信速度快;HTTP 使用 TCP 作为它的支撑运输协议,HTTP 客户机发起一个与服务器的 TCP 连接,一旦连接建立,浏览器(客户机)和服务器进程就可以通过套接字接口访问 TCP,HTTP 运行传输任意类型的数据对象。
无状态:
协议对于事务处理没有记忆能力,客户端第一次与服务器建立连接发送请求时需要进行一系列的安全认证匹配等,因此增加页面等待时间,当客户端向服务器端发送请求,服务器端响应完毕后,两者断开连接,也不保存连接状态(一刀两断,恩断义绝,从此路人),下一次客户端向同样的服务器发送请求时,由于他们之前已经遗忘了彼此,所以需要重新建立连接。
无连接 :
限制每次连接,使其只处理一个请求。服务器处理完客户端的请求并收到客户端的应答后,即断开连接,这种方式可以节省传输时间。
存储位置不同:
cookie 是将用户数据通过加密的方式保存在客户端,大多数情况 cookie 存储在浏览器;Session 是用于控制客户端和服务端的连接,Session 存储在服务器;
存储容量不同:
单个 cookie 保存的数据不得超过 4kb,一个站点最多 20 个 cookie,Session 一般情况下没有上限,不过建议不要存放太多东西,否则影响性能;
存取方式不同:
cookie 只能用 ASCII 字符串,通过编码方式获取 Unicode 字符或者二进制数据,不好存储复杂的信息,而 Session 能存储任何类型的数据;
隐私策略/安全性不同:
cookie 放在客户端,可以进行 cookie 欺骗,所以不安全,Session 放在服务端,更加安全;
有效期不同:
cookie 可以设置属性达到长期有效,Session 依赖于 JSESSIonID 的 cookie,cookie JSESSIonID 的过期时间默认为-1,只需要关闭窗口 Session 就会失效,就算不依赖 cookie,用 UrL 重写也不能完成,如果 Session 超时时间过长,容易导致内存溢出;
服务器压力不同:
cookie 保存在本地,不存在服务端压力,Session 保存在服务端,每个用户产生一个 Session,当访问增多,会比较占用服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用 cookie;
浏览器支持不同:
如果浏览器禁用 cookie,那么 cookie 直接失效,Session 比较好点,可以用 URL 重写;
cookie 和 Session 应用的场景:
cookie 一般用于记住用户的登录状态,如记录用户的习惯,购物车;而 Session 用于登录验证。
HTTP 协议传输的数据是未加密的,也就是明文的,因此使用 HTTP 协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,SSL(SecureSocketsLayer)协议用于对 HTTP 协议传输的数据进行加密,从而就诞生了 HTTPS。简单来说,HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比 http 协议安全。
HTTPS 和 HTTP 的区别主要如下:
HTTPS 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。
HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 ssl 加密传输协议。
HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。
• 1xx :指示信息/参考信息(Info)——表示服务器收到请求,需要请求者继续执行操作;
• 2xx :成功(Successful)——表示请求已被成功接收、理解、接受;
• 3xx :重定向(Redirection)——要完成请求必须进行更进一步的操作;
• 4xx:客户端错误(Client Error)——表示请求可能有语法错误或请求无法实现,妨碍了服务器的处理;
• 5xx :服务器端错误(Server Error)——表示服务器在处理请求的过程中发生了内部错误,未能实现合法的请求;
常见状态码:
• 200:成功(OK )——服务器已成功处理了请求;
• 301:永久移动(Moved Permanently)——请求永久重定向,请求的页面已永久移动到新位置;
• 302:临时移动(Found )——请求临时重定向, 服务器目前从不同位置的网页响应请求,资源只是临时被移动,但请求者应继续使用原有 URL 来进行以后的请求;
• 304 :未修改(Not Modified)——文件未修改,可以直接使用缓存的文件;
• 400 :错误请求(Bad Request )——由于客户端请求有语法错误,不能被服务器所理解;
• 401 :未授权(Unauthorized)——请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用;
• 403:禁止(Forbidden)——服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因;
• 404:未找到(Not Found )——请求的资源不存在,例如,输入了错误的 URL;
• 500 :服务器内部错误( Internal Server Error )——服务器发生不可预期的错误,导致无法完成客户端的请求;
• 503 : 服务不可用(Service Unavailable )——服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常;
七.你所知道的常见接口类型有哪些?HTTP 接口:基于超文本传输协议(HyperText Transfer Protocol HTTP)开发的接口,是应用最广泛的网络协议之一,但并不排除没有使用其他协议。基于浏览器/服务器(Brower/Server)的软件系统大多数为 HTTP 接口;
Web Service 接口:系统对外的接口,根据提供的方法引用提供的接口,从而获取数据;
RESTful 接口:简称 REST,描述了一个架构式的网络系统;
八.常见的 HTTP Header 及其作用?- Accept:用于告诉服务器,客户机支持的数据类型 (例如:Accept:text/html,image/、image/webp,/*);
- Accept-Encoding:用于告诉服务器,客户机支持的数据压缩格式;
- Accept-Language:客户机语言环境;
- Accept-Charset:用于告诉服务器,客户机采用的编码格式;
- Connection:告诉服务器,请求完成后,是否保持连接;
- cookie:客户机通过这个头,将 cookie 信息带给服务器; Host:客户机通过这个服务器,想访问的主机名;
- Referer:客户机通过这个头告诉服务器,它(客户端)是从哪个资源来访问服务器的(防盗链);
- If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间;
- User-Agent:客户机通过这个头告诉服务器,客户机的软件环境(操作系统,浏览器型号和版本等);
- Date:告诉服务器,当前请求的时间;
- Thrift
- HTTP
- REST
- SOAP
- JMS
- UDDI
- Dubbo
- Swagger
- FlatDoc
- RestDoc
- API blueprint
- Slate
- Miredot
以上
That‘s all



