接口测试--理论篇+JSON基础(详解)

  1. 请求路径( request path ):就是URL的PATH部分

  2. 协议版本(protocol/version):包括协议和版本号HTTP…

请求头

请求头部:紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息, 主要是为了去完成通信的控制

请求头的名称一般都是由http协议提前约定好的,具有通信效果,一般不能自定义

请求体

请求主体。是指第一个空行之后的内容,可以添加任意的数据。

这里的空行是必须的,一般来说body就是空的。post方法才会产生body内容。

HTTP响应组成

========

HTTP响应也由四个部分组成:

1. 状态行(response line)

2. 消息报头/响应头( response header )

3. 空行

4. 响应正文/响应报文(response body)

状态行


通常就是响应数据包中的第一行。由HTTP协议/版本号, 状态码, 状态消息三部分组成。

状态码

由三位数字组成,第一个数字定义了响应的类别,共分五种类别1**,2**,3**,4**,5**。

其中1**代表信息,服务器收到请求,需要请求者继续执行操作。

2**代表请求成功,操作被成功接收处理。

3**代表重定向,需要进一步的操作以完成请求。

4**客户端错误,请求包含语法错误或无法完成请求。

5**服务器错误,服务器在处理请求的过程中发生了错误。

我们来看看常见的状态码:

常用的状态码这些,还有许多不是常用的这里就不一一做介绍了,有兴趣的朋友可以加博主的微信,一起发你了解。

响应头


第二行和第三行为消息报头,用来说明客户端要使用的一些附加信息。例如 服务器类型,响应报文格式。

这里会告诉你响应的时间,采用什么样的数据类型等详细信息。响应头会有很多的参数,每种参数代表的意思也各不同,能看懂个大概也是不错的。

响应正文


空行后面的html部分为响应正文。表示服务器返回给客户端的文本信息,这里也有必须值得注意的地方就是消息报头后面的空行是必须的,即使第四部分的返回数据为空,也必须有空行

这里看的是CSDN的抓包,html部分都是属于响应正文的部分

HTTP无状态

=======

http协议本身是无状态的,但是在实际的web开发中常有一些操作需要有状态。比如想要 访问一些私人访问权限的文章,或者这种操作需要明确当前用户身份。为了解决无状态带来的鉴权问题,一般有以下几种解决方 案:cookie、session、token。

Cookie


是储存在客户端的一串字符,一般说来大小不超过4kb。比如我们常见的记住密码功能,或者 一些基于之前输入的提醒和默认配置,就是通过cookie来实现的。

cookie简单说来就是一种本地存储方法。但是这里存储的信息常用来进行鉴权操作。

cookie只能保存文本信息,浏览器可以禁止cookie。cookie的期限可以被自由设定,可以是仅仅一次浏 览起效,也可以长达一年。如果是短期的,那么这些信息会被存储在内存中,如果是长期则会存储在硬盘上。

注意:

单纯的采用cookie来认证身份会带来一个比较麻烦的问题,就是伪造比较容易。因为这样处理, cookie中必然要带有身份信息,但是服务器也要解析这个身份信息,所以必然要在原理上支持双向的 编码和解码,那么这个信息很容易被破解和进一步伪造。

Session


如果想要解决上述cookie伪造的这个问题,我们常用的方案应该是加一个secret,而这个secret应该是 放在服务器上的,服务器返回这样一个带有secret编码的字符串,而在服务器端再带上这个secret反 向解密,如此一来,问题不就解决了,这个就是我们要讲的第二个对象:session。

session是保存在服务器端的,是跟踪用户的一种上下文保持的机制。当服务器创建了一个session时, 就给客户端发送的响应头中包含了set-cookie字段。浏览器会将set-cookie的字段信息,将其保存在本地,并且之后发送的请求报文都包含了cookie,cookie中包含了set-cookie返回的字段值。

Session也可以设定有效时间。

Token


访问令牌access token,用于接口中,用于标识接口调用者的身份、凭证。简单来说就是不要登录。

目的:减少用户名和密码的传输次数

token类型:

1. API Token(接口令牌):用于访问不需要登录的接口

2. USER Token(用户令牌):用于访问需要用户登录之后的接口

3. Token的实效性:token可以是一次性的、也可以在一段时间范围内是有效的

4. Token一般放在请求头headers或者body参数里面。

一般在接口文档会有说明

Token鉴权流程

1. 客户端使用用户名跟密码请求登录

2. 服务端收到请求,去验证用户名与密码

3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端

4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里

5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token

6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回 请求的数据

JSON

====

什么是JSON?

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation),JSON是轻量级的文本数据交换格式(数据传递)–xml

JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,JSON 解析器和 JSON 库支持许多不同 的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。

语法规则


JSON 语法是 JavaScript 对象表示语法的子集。

  1. 数据在名称/值(键值对)对中 如 {“name” : “zs”}

  2. 数据由逗号分隔 如 {“name” : “zs” , ”age”:”18”}

  3. 大括号保存对象 如 {“name” : “zs” , ”age”:”18”}

  4. 中括号保存数组 如 {“score” : [100,80,90]

数据类型


  1. 数字(整数或浮点数) 如:{“age”:18, ”score”:70.5} 注意,数字直接写,不需要带任何符号

  2. 字符串(在双引号中) 如:{“name”:”zs” , ”sex”:”女”} 注意:字符串是用双引号或者单引号引起 来的内容

  3. 逻辑值(true 或 false) 如:{ “flag”:true } 注意:true,false,直接写,不需要加引号

  4. 数组(在中括号中) 如 : {“score” : [100,80,90]} 标识符:[],数组类型是有索引值,索 引值是从0开始的

  5. 对象(在大括号中) 如:{ “stu1”:{“name”:”zs” , ”sex”:”女”} , “url”:“https://www.baidu.com” }

  6. null 如 : {“score” : Null}

JSON对象


别看JSON跟字典很像,其实还是有一定区别的。

  1. JSON 对象使用在大括号{}中书写。

  2. 对象可以包含多个 key/value(键/值)对,每个 key/value 对使用逗号(,)分割,最后一个键值对不 需要逗号。

  3. key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。

  4. key 和 value 中使用冒号(:)分割。

  5. 如:{ “name”:“zs” , “sal”:10000, “addr”:Null}

JSON与字典的区别

json–key只能是字符串,value:(字符串, 数字, 对象, 数组, 布尔值或 null)

dict–key可以是数字(整数,浮点数,布尔值),字符串,元组,就是不能为列表 value可以是数字(整数,浮点数,布尔值),字符串,元组,列表,字典

访问JSON对象值

myobj={“name”:“zs”,“sal”:10000,“add”:None}

x=myobj[“add”]

print(x)

JSON数组


  1. JSON 数组在中括号中书写。

  2. JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

访问JSON对象值

myobj={“name”:“zs”,“sal”:10000,“add”:None}

x=myobj[“add”]

print(x)

JSON数组


  1. JSON 数组在中括号中书写。

  2. JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。

[外链图片转存中…(img-GhsD8OAI-1719265965203)]
[外链图片转存中…(img-HUnyFeJp-1719265965203)]
[外链图片转存中…(img-ReczViX8-1719265965204)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值