首页 > 其他分享 >关于接口协议,你必须要知道这些!

关于接口协议,你必须要知道这些!

时间:2024-05-21 17:34:44浏览次数:18  
标签:协议 HTTP 请求 IP 接口协议 TCP RPC 关于 必须

简介

服务与服务之间传递数据包,往往会因为不同的应用场景,使用不同的通讯协议进行传递。比如网站的访问,常常会使用 HTTP 协议进行传递,文件传输使用 FTP,邮件传递使用 SMTP。上述的三种类型的协议都处于网络模型中的应用层。除了应用层的常用协议之外,对于传输层的 TCP、UDP 协议,以及 Restful 架构风格、RPC 协议等等基础网络知识要有一定的了解和认知。

网络协议介绍

在了解具体的协议之前,需要先了解 OSI 七层模型、TCP/IP 四层模型、五层体系结构这三种不同的网络模型。如图是网络协议模型对比图。

  • OSI 参考模型是一个在制定协调进程间通信标准时所使用的概念性框架,它并不是一个标准。
  • TCP/IP 四层模型是网际网络的基础通信架构。常视为是简化的七层 OSI 模型。
  • 五层协议是 OSI 和 TCP/IP 的综合,实际应用还是 TCP/IP 的四层结构。
  • TCP/IP 协议栈是对应 TCP/IP 四层模型所使用的具体的网络协议。

TCP 协议

TCP 协议是在传输层中,一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP 协议的工作方式为在建立连接的时候需要进行“三次握手”,终止连接时需要进行“四次挥手”。“三次握手”和“四次挥手”是 TCP 协议的重要知识点,在后面的章节会通过实战和理论结合具体介绍。

适用场景

TCP 协议的面向连接、错误重传、拥塞控制等特性,适用于可靠性高的场景,比如涉及用户信息的数据传输。

UDP 协议

UDP 协议一旦把应用程序发给网络层的数据发送出去,就不保留数据备份。它仅在 IP 数据包的头部加入复用和数据校验字段。所以 UDP 常常被认为是不可靠的数据包协议。

适用场景

UDP 协议的不需要提前建立连接、实现简单的特性,非常适用于实时性高的场景,比如流媒体、在线游戏等。

RPC 协议

RPC 的英文为 Remote Procedure Call ,它很好的诠释了 RPC 协议的概念,即为以本地代码调用的方式实现远程执行,RPC 主要用于公司内部的服务调用。RPC 接口的优点在于传输效率更高、性能损耗更低、自带负载均衡策略、更好的服务治理能力。

常见的 RPC 协议

目前在行业内常用的 RPC 协议主要如下:

  • Dubbo:Java 上的高性能 RPC 协议,Apache 开源项目,由阿里捐赠 底层应用层协议支持 Dubbo 缺省 TCP 协议、HTTP、Hessian、Thrift、gRPC 等。
  • gRPC:高性能通用 RPC 框架,基于 Protocol Buffers。
  • PB(Protocol Buffers):是一个语言中立、平台中立的数据序列化框架。Google 开源项目。
  • Thrift:与 gRPC 类似的多语言 RPC 框架,Apache 开源项目。
  • JSON-RPC:A light weight remote procedure call protocol. It is designed to be simple。

HTTP 协议

HTTP 协议是接口测试中最常见的协议,是用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是万维网的数据通信的基础。客户端向服务端发送 HTTP 请求,服务端则会在响应中返回所请求的数据。在测试过程中,常常需要校验请求和响应结果,所以了解 HTTP 协议,对于接口测试来说,是重中之重。

  • 请求
    • 请求行:method url protocol
    • 请求方法:GET、POST、PUT、DELETE、HEAD
    • 请求头: Host Cookie User-Agent
    • 请求参数 query
    • 请求体:JSON XML FORM
  • 响应:
    • 响应状态行
    • 响应头
    • 响应体

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

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;
>

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

HTTP 响应状态码

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

** **

RESTful 架构

HTTP 基本行为代表意义

起源

Roy Thomas Fielding 博士于 2000 年在他的博士论文中提出来的一种万维网软件架构风格。其目的是为了便于不同的软件在网络中传递信息。RESTful 是基于 HTTP 协议之上制定的一种资源请求、操作的风格,用一句话来概括就是使用 URL 去定位资源,使用 HTTP 动词描述操作。

HTTP 请求方法在 RESTful API 中的典型应用:

方法 意义
GET 获取资源
POST 新增或者更新
PUT 更新资源
DELETE 删除资源

注意: 不同公司在使用 RESTful 架构风格的时候存在部分差别。

get 与 post 区别

在日常的工作当中,HTTP 请求中使用最多的就是 GET 和 POST 这两种请求方式.那么掌握这两种请求方式的原理,以及两种请求方式的异同,也是之后做接口测试一个重要基础。

  • 请求方法不同。
  • POST 可以附加 body,可以支持 Form、JSON、XML、Binary 等各种数据格式。
  • 从行业通用规范的角度来说,如果对数据库不会产生数据变化的,比如查询操作,建议使用 GET 请求,数据的写入与状态建议用 POST 请求。

总结

  • 网络模型
  • 常见接口协议
  • HTTP 协议
  • RESTful 架构

标签:协议,HTTP,请求,IP,接口协议,TCP,RPC,关于,必须
From: https://www.cnblogs.com/hogwarts/p/18204584

相关文章

  • 关于测量设备的一些参数
    RG的含义RG的含义是“Range”(量程),表示的是整个测量范围的百分比。例如量程为1000V,误差为1000V的0.01%即0.1V;这意味着无论当前的读数是多少,误差都是固定的,相对于量程的百分比,无论电压为500V,还是800V,误差都是0.1V;RD的含义RD的含义是“Reading”(读数),表示的是测量误差与实际......
  • 关于idea报错提示Output directory is not specified
    报错提示:D:\XXX\src\main\java\com\XXX\XXX\base\BaseApiController.java:11:8java:写入com.XXX.XXX.base.BaseApiController时出错:Outputdirectoryisnotspecified解决措施:方法一:检查Maven配置确保pom.xml中的Maven配置正确设置了输出目录。你可以按照以下步骤......
  • 请列出关于创新感受最深的几点启发
    关于创新的启发:以用户为中心:真正的创新应该是解决用户的需求和问题,因此要深入了解用户,观察他们的行为和反馈,以此为基础进行创新。勇于尝试:创新需要勇气和冒险精神,愿意尝试新的想法和方法,接受失败,并从失败中吸取教训,不断改进。跨界合作:创新往往涉及多个领域和学科,因此要与......
  • 【最新】别再发邮件了,必须在开源之夏后台申请,50%的人竟然都没有报名成功!
    引言近期我们注意到很多学生朋友通过邮件向导师申请报名,请注意!!!​这是无效的,请必须通过“开源之夏”官方后台申请报名,请仔细参考这篇【报名攻略】所以,我们特此举办这次宣讲会,目的是向所有感兴趣的学生详细介绍ApacheDolphinScheduler社区在开源之夏中提供的项目,并且解答学生朋友......
  • 关于Linux OpenSSH登录的问题
    OpenSSH由7.6升级到8.2和9.0之后用密码登录登不上去了,提供以下思路:1、7.6之前的版本SSH启动路径为/usr/local/sbin/sshd,7.6之后的版本启动路径为/usr/sbin/sshd,控制启动文件为vi/etc/rc.d/init.d/sshd 2、检查SSH服务的配置文件 /etc/ssh/sshd_config。确保没有设置 Passwo......
  • 关于 图论建模 的一些技巧
    分层图思想分层图在最短路中经常用到。直观上讲,就是将一个图复制k倍,互相是平行的,即互不影响,分层图两两之间会有决策边相连。这就等价于要在一个图上进行k次决策,对于每次决策,不影响图的结构,只影响目前的状态或代价。一般将决策前的状态和决策后的状态之间连接一条权值......
  • 关于SQLServer数据库的READ_COMMITTED_SNAPSHOT隔离级别
    默认情况下,SQLServer的事务隔离级别是READCOMMITED。刚开始我理解这个模式就是读已经提交的,那也就是说并发一个事务去更新,一个事务查询同一条数据应该是像Mysql、Oracle不会加锁直接返回数据库已经提交的数据才对。但是SQLServer不是这样的。SQLServer中有READ_COMMITTED_SN......
  • 关于一重指针和二重指针的区别和联系
    一、关键词指针,二重指针二:知识点1.指针的本身地址、指针所指向地址、指针所指向地址内容本身地址:指针也是一个类型,通常是在64位系统上是8字节,32位是4字节。既然是类型对象就需要存储地址,因此本身地址指的是用于存储指针这个变量值的地址。指针指向地址:指针是个变量,这个变......
  • 解决wps office必须登录才能编辑使用,即解除不登录账号 工具栏 全灰色限制!
    方法步骤:1、鼠标右键点击“开始”菜单,选择“运行“,输入regedit,点击确定打开注册表编辑器。2、在打开的注册表编辑器页面,依次展开以下注册表项:\HKEY_CURRENT_USER\SOFTWARE\Kingsoft\Office\6.0\plugins\officespace\flogin3、在右侧找到 enableForceLoginForFirstInstallD......
  • 别再发邮件了,必须在开源之夏后台申请,50%的人竟然都没有报名成功!
    引言近期我们注意到很多学生朋友通过邮件向导师申请报名,请注意!!!​这是无效的,请必须通过“开源之夏”官方后台申请报名,请仔细参考这篇【报名攻略】所以,我们特此举办这次宣讲会,目的是向所有感兴趣的学生详细介绍ApacheDolphinScheduler社区在开源之夏中提供的项目,并且解答学生朋友......