【接口测试】HTTP协议介绍

目录

介绍

HTTP状态码

HTTP报文

请求方法

HTTP版本

HTTP标头

通用标头

请求标头

响应标头

get 编码

post 编码

RESTful风格

HTTPS


 

绝大多数的Web服务接口都是基于HTTP协议进行通信的,包括RESTful API和SOAP等。了解HTTP协议可以帮助测试人员理解接口的请求和响应格式,从而更好地进行接口测试

介绍

HTTP 协议(超文本传输协议)是服务端传送超文本到前端的传输协议,传送的数据一般包括 HTML 文件、图片、文字等。HTTP 协议工作在前端到服务端的架构上,App 端或者 Web 浏览器端通过 URL 或者接口向服务端发送请求,服务端接收到前端的请求后,向前端发送响应信息

HTTP状态码

  1. 1xx(信息提示):服务器接收到请求并正在处理。
    • 100 Continue:客户端可以继续发送请求。
    • 101 Switching Protocols:服务器正在切换协议。
  1. 2xx(成功):请求被成功接收、理解和处理。
    • 200 OK:请求成功,服务器返回所请求的资源。
    • 201 Created:请求已成功处理,并创建了新的资源。
    • 204 No Content:服务器成功处理请求,但没有返回任何内容。
  1. 3xx(重定向):需要进一步操作以完成请求。
    • 301 Moved Permanently:所请求的资源已永久移动到新位置。
    • 302 Found:所请求的资源暂时移动到新位置。
    • 304 Not Modified:客户端缓存的资源是最新的,无需重新下载。
    • 303:永久重定向
  1. 4xx(客户端错误):请求包含语法错误或无法完成请求。
    • 400 Bad Request:请求无效,服务器无法理解。
    • 401 Unauthorized:请求未经授权。
    • 403 Forbidden:服务器拒绝请求访问。
    • 404 Not Found:所请求的资源不存在。
  1. 5xx(服务器错误):服务器在处理请求时发生错误。
    • 500 Internal Server Error:服务器内部错误。
    • 502 Bad Gateway:服务器作为网关或代理,从上游服务器接收到无效响应。
    • 503 Service Unavailable:服务器暂时无法处理请求

401和403的区别?

401状态码表示客户端请求需要进行身份验证,而此时客户端未提供凭据或提供的凭据不正确,客户端需要重新进行身份验证。

403状态码表示客户端请求被禁止,服务端明确告知客户端这个请求是不被允许的,客户端无需重新进行身份验证。

要想解决401状态码问题,需要首先确认账号密码是否正确,其次检查服务端身份验证的代码是否能够正确调用。如果服务端没有进行身份验证,需要根据业务规则对接口进行修改,让其进行身份验证。

要想解决403状态码问题,需要先确认客户端访问的资源是否有权限访问,如果没有权限,需要根据业务规则修改接口权限配置。

HTTP报文

HTTP协议主要由三大部分组成:

  • 起始行:由方法、URL字段和HTTP版本字段组成
  • 头部字段
  • 正文消息

(起始行和头部字段,合并称为请求头或响应头)

请求方法

  1. GET:从服务器获取资源。该请求方法不应该对服务器上的资源做任何修改,只允许读取数据。
  2. POST:向服务器添加新的资源。该请求方法对服务器上的资源做出修改,并在服务器上创建新资源。
  3. PUT:向服务器更新某个资源。该请求方法对特定资源进行完全替换,如果没有找到该资源,则创建一个新的。
  4. DELETE:从服务器删除指定资源。
  5. HEAD:与GET类似,但仅返回响应头部信息,不返回响应正文(用于获取资源的元信息)。
  6. OPTIONS:获取Web服务器所支持的HTTP请求方法列表。
  7. CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
  8. TRACE:回显服务器收到的请求,用于测试或诊断。

HTTP版本

  • HTTP1.0
  • HTTP1.1
  • HTTP2.0

HTTP标头

通用标头
请求标头

Accept:告知客户端能够接收的MIME类型是什么

Accept-Charset:客户端能够接受的字符编码

Accept-Encoding:客户端希望服务端返回的内容编码

Accept-Language:客户端希望服务端返回的语言类型

Authorization:请求头用于向服务器认证用户代理的凭据,通常用在服务器以401未经授权状态和WWW-Authenticate标头响应之后,啥意思呢? 你不明白的话我画张图给你看

Host:指明了服务器的域名

User-Agent:将创建请求的浏览器和用户代理名称等信息传达给服务器;Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0

响应标头
get 编码

application/x-www-form-urlencoding

post 编码

1、application/x-www-form-urlencoded (默认)

1、multipart/form-data (上传文件)

2、application/json (用来告诉服务端消息主体是序列化后的 JSON 字符串)

3、text/xml:是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。 XML 结构还是过于臃肿,一般场景用 JSON 会更灵活方便。

RESTful风格

RESTful风格是一种基于HTTP协议的Web服务架构,它使用HTTP的GET、POST、PUT、DELETE等方法来实现对资源的操作。它强调利用URI(统一资源标识符)来唯一地标识资源,通过HTTP报文中的动词和请求头来操作资源,而不是通过某些特定的RPC(远程过程调用)机制进行通信。RESTful架构通常采用JSON或XML格式作为数据传输格式。

在RESTful架构中,资源的状态可以使用HTTP状态码进行表示,如200表示请求成功,404表示未找到资源等。同时,RESTful还要求服务端无状态化,即服务端不记录用户状态信息,每次请求都包含足够的信息来描述请求。

使用RESTful架构,可以使得Web应用程序更加简单、高效、可伸缩、易于维护。目前,RESTful已经成为很多互联网公司API设计的首选。

HTTPS

HTTPS为了解决HTTP明文传输,也没有用户验证,以及未验证报文完整性的问题

HTTPS 的全称是 Hypertext Transfer Protocol Secure ,它用来在计算机网络上的两个端系统之间进行 安全的交换信息(secure communication) ,它相当于在 HTTP 的基础上加了一个 Secure安全 的词眼,那么我们可以给出一个 HTTPS 的定义: HTTPS 是一个在计算机世界里专门在两点之间安全的传输文字、图片、音频、视频等超文本数据的约定和规范。 HTTPS 是 HTTP 协议的一种扩展它本身并不保传输的证安全性,那么谁来保证安全性呢? 在 HTTPS 中,使用 传输层安全性(TLS)或安全套接字层(SSL) 对通信协议进行加密。也就是 HTTP + SSL(TLS) = HTTPS。

HTTPS 协议提供了三个关键的指标

  • 加密(Encryption), HTTPS 通过对数据加密来使其免受窃听者对数据的监听,这就意味着当用户在浏览网站时,没有人能够监听他和网站之间的信息交换,或者跟踪用户的活动,访问记录等,从而窃取用户信息。
  • 数据一致性(Data integrity),数据在传输的过程中不会被窃听者所修改,用户发送的数据会完整 的传输到服务端,保证用户发的是什么,服务器接收的就是什么。
  • 身份认证(Authentication) ,是指确认对方的真实身份,也就是 证明你是你 (可以比作人脸识别)它可以防止中间人攻击并建立用户信任

SSL/TLS

SSL:安全套接字层,位于OSI七层网络模型中的第五层。后面更名为TLS

TLS,用于两个通信程序之间提供保密性和数据完整性

HTTPS并不是一项新的应用层协议,只是HTTP通信接口部分由SSL和TLS替代而已。通常情况下,HTTP会先和直接和TCP进行通信。在使用SSL的HTTPS后,则先和SSL通信,接着再由SSL和TCP进行通信。也就是HTTPS是身披一层SSL的HHTP

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值