接口测试——常见的接口协议

一、网络模型

二、常见接口协议

RPC协议

  • RPC(remote procedure call)
  • 以本地代码调用的方式实现远程执行
  • 主要用于公司内部的服务调用

优点

  • 传输效率高,性能损耗低、自带负载均衡、更好的服务治理能力

常见的RPC协议

  • Dubbo:Java基础上的高性能RPC协议
  • gRPC:高性能通用RPC框架,基于protocol buffers(一个语言中立,平台中立的数据序列化框架)
  • Thrift:与gRPC类似的多语言RPC框架

三、HTTP 协议详解

3.1、HTTP协议

  • 请求
    • 请求行:method、URL、protocol
    • 请求方法:get、post、put、delete、head
    • 请求头:Cookie、user-agent
    • 请求参数:query
    • 请求体:Json、xml、form
  • 响应
    • 响应状态行
    • 响应头
    • 响应体

3.2、URI和URL

  • URI:统一资源标识符,用来唯一标识一个资源

  • URL:统一资源定位符,它是一种具体的URI

  • URL结构:
    https://www.baidu.com/s?wd=霍格沃兹&rsv_spt=1

    1. 协议:http
    2. 域名:www.baidu.com
    3. 端口:跟在域名后面,域名和端口之间使用“:”作为分隔符,非必须,如果省略端口部分将采用默认端口
    4. 路径:/s
    5. 请求参数:wd=霍格沃兹&rsv_spt=**1

3.3、HTTP 请求报文

> GET /uploads/user/avatar/31438/8216a3.jpg HTTP/1.1
> Host: ceshiren.com
> Accept-Encoding: deflate, gzip
> Connection: keep-alive
> Pragma: no-cache
> Cache-Control: no-cache
> User-Agent: Mozilla/5.0 
(Macintosh; Intel Mac OS X 10_15_0)
 AppleWebKit/537.36 
 (KHTML, like Gecko) 
 Chrome/80.0.3987.116 Safari/537.36
> Accept: image/webp,image/apng,image/*,*/*;q=0.8
> Referer: https://ceshiren.com/
> Accept-Language: en,zh-CN;q=0.9,zh;q=0.8
> Cookie: user_id=xx;

_homeland_session=xx;
>

3.4、HTTP 响应报文

< HTTP/1.1 200 OK

< Server: nginx/1.10.2
< Date: Thu, 12 Mar 2020 09:13:44 GMT
< Content-Type: image/png
< Content-Length: 11390
< Connection: keep-alive

3.5、HTTP 响应状态码

  • 1xx 临时响应,表示通知信息,请求收到了或正在进行处理
  • 2xx 表示成功,接受或知道了
    • 200 成功
  • 3xx 表示重定向,要完成请求还必须才去进一步的行动
    • 301 永久移动
    • 302 临时移动
  • 4xx 表示客户端请求错误
    • 403 未授权
    • 404 未找到
  • 5xx 表示服务端错误
    • 500 服务器内部错误
    • 503 服务不可用

四、Restful 架构

  • Restful:Representational State Transfer
  • 借助于 HTTP 协议的基本请求方法代表资源的状态切换
    • GET:获取资源
    • POST:新增或者更新
    • PUT:更新资源
    • DELETE:删除资源