http,api接口相关知识点

http

  • HTTP协议的基本知识
    • 方法
      • 请求
      • 响应![请添加图片描述](https://img-blog.csdnimg.cn/f69ae3118f5545b3adb751ad30e38fc9.png)
  • 消息的交互
  • 测试 工具开发
    • Requests库简介
    • fiddler的使用(抓包)
      • 手机抓包
    • 构建URL请求参数
    • 检查HTTP响应
    • Session详解

HTTP协议的基本知识

**介绍:**全程超文本传输协议,用来在浏览器和服务器上来传输超文本信息,后来发展到服务器与服务器之间,app和服务器都有使用
**特点:**通讯双方分文客户端和服务端,目前所有HTTP协议是基于TCP协议的,所有首先要创建一个TCP连接
一定是客户端发送请求给服务端,TCP连接可以用一段时间,一段时间不用会消失

方法

请求

一般常用的请求方法:get , post, ptu, delete
http,api接口相关知识点_第1张图片

请求头:HTTP/1.1下面的内容就是消息头

  1. GET是请求方法这一行为请求行
  2. HOST:告诉他访问的那个应用(同一个服务端口上面也可以运行很多网站服务,要告诉服务器访问哪个)
  3. User-Agent:告诉他是火狐,
  4. language:语言中文

请求的url,请求头中可以存放一些数据信息,但是有些数据通常放在信息体中,请求头和信息体用一行隔开
通常POST和PUT请求中,会存放一些json,xml,包括一些内容的描述,如名称,编码等等。json是现在主流的用于传输的格式

响应http,api接口相关知识点_第2张图片

在api接口中,返回的是文本
状态行:status line
协议版本 状态码 状态
** 状态码**

  1. 2**表示成功,一般没什么问题
  2. 3**表示我这个请求的url已经改变,需要重定向,会在响应中告诉客户端,重新请求另一个url
  3. 4**请求有错误
    400 Bad Request 表示客户端请求不符合接口要求,比如格式完全错误,完全不知道格式意思
    401 Unauthorized 表示客户端需要认证才能发送请求,比如没有登录就访问
    403 Forbidden 表示客户端没有权限要求服务器处理这样的请求,比如普通用户请求删除别人账号
    404 Not Found 表示请求的url不存在
  4. 5** 表示服务端在处理请求中,出现了未知的错误
    通常代码问题,或者服务端子系统出现故障(比如数据库服务宕机了,断了)

消息的交互

接口测试:
内容依据接口规范,写出测试用例
直接通过消息接口,对被测的系统进行消息收发,检测是否正确

目前的软件系统之间的消息接口,都是基于HTTP协议的,客户端发一个请求给服务端,服务端就返回一个HTTP响应,和API程序调用神似
所以一般称为API接口测试
一般列出信息称为接口消息,网页,css都是静态资源,无需特殊处理
需要处理的信息,才是接口

测试 工具开发

Requests库简介

Requests经常被用来爬取网页信息,用它发起HTTP请求,从HTTP响应消息中提取消息。

response = requests.get(url)构建get方法,向这个url发送请求
response 是Requests库里面定义的一个对象

fiddler的使用(抓包)

  1. 为了避免抓的包太多我们一般会设置过滤项,在filters中进行设置
    http,api接口相关知识点_第3张图片
  2. inspectors查看我们抓的包
  3. 相当于一个代理,把自己当成一个系统代理,装在127.0.0.1:8888上
proxies = {
	'http': http://127.0.0.1:8888"
}
response = requsets.get('http://mirrors.sohu.com/', proxies=proxies)#利用抓包工具进行代理
print(response.text)

手机抓包

手机的wifi和电脑需要连接同一个子网

构建URL请求参数

  1. 直接写在url里面(列如www.baidu.com/s?******************)
  2. 定义到一个字典里面, params=paras
    消息头

消息体
格式都是字符串一般分为 :XML格式,json格式,urlencoded格式,或者其他的字符串
http,api接口相关知识点_第4张图片
XML文件 :data=payload需要编码成字节码文件
urlencoded格式:把存在url ?后面的参数放到字典里。
json格式:字符串一律双引号http,api接口相关知识点_第5张图片
python中的数据对象json传入data , 上图中不是 字符串,我们需要使用data=json.dumps(payload)把它转换为字符串
如果payload中包含中文字符,他会用ascii码表示(payloa, ensure_ascii=False).encode()

检查HTTP响应

**返回的response中存放着 响应返回的所有信息

text = json.loads(response.content.decode(‘utf8’)返回JSON格式转换为python格式
text[‘a’],取出数据

Session详解

session是一个数据结构,存在数据库中,保存用户这次登录的相关操作,存一个sessionID,以方便来找到这些信息,当客户端再次请求 时候,一定会带上服务器上次返回的SessionID,这个SessionID放在HTTP消息的消息头Set-Cookie中,服务端通过SessionID去数据库里查找,会获得用户的相关信息。

由于HTTP协议规定Set-Cookie是请求头的必带字段,Session利用这个,把SessionID存在Cookie中
requests处理session-cookie
s = requests.Session()
resopnce = s.port(“”,data={***})
通过Session对象发送请求,response保存cookie消息

你可能感兴趣的:(http,api接口相关知识点)