一、鉴权
授权:相当于给一个通行证
鉴权:鉴定是否有权限访问(判定有没有通行证)
token
token的意思是“令牌”,是服务端生成的加密后一串字符串,作为客户端进行请求的一个标识。
![在这里插入图片描述](https://img-blog.csdnimg.cn/fcbdff2a248a44ec97e2011c95860785.png
cookie和session
cookie是一门客户端技术,一般是由服务器生成返回给浏览器客户端来保存的,并且cookie是以键值对的形式保存在浏览器客户端的,每一个cookie都会有名称,值,过期时间…。cookie有很多使用场景,在项目中比较常见的有:
1.登录记住用户名
2.记录用户浏览记录
Cookie过期时间:
- 日期时间
- 会话期间(打开网站->关闭网站)
Http协议是无状态的,Session是一种让请求从无状态变成有状态的机制,session是服务端的会话技术,当用户登录了系统,服务器端的就会创建一个会话,此会话中可以保存登录用户的信息。
token鉴权和cookie+session鉴权的区别??
- cookie:客户端技术,用来保存一些数据,比如:用户的登录数据、用户浏览数据
- session:服务端技术,在用户登录之后服务端也需要保存一些用户的数据
- token:令牌技术,由服务端通过加密之后生成一串字符串返回给客户端,在我们登录成功之后由服务端返回给客户端,之后之后的接口请求就会携带token值来做鉴权
(1)token鉴权:登录–>服务端生成token字符串–>返回给客户端–>登录之后的请求携带这个token串即可
(2)cookie+session鉴权,登录–>服务端通过session保存用户数据,再生成一个标识sessionId–>返回给客户端(sessionID保存在set-cookie这个响应头字段里面)–>浏览器自动化识别set-cookie并且将其值保存到本地cookie中–>登录之后的请求携带这个sessionID串即可
二、REST-assured
REST-assured是Github上一个开源项目,它的语法非常简洁,是在Java世界中一种专为接口测试而设计的测试框架
基本使用
- Maven的pom.xml添加 REST-assured 依赖坐标
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.0.0</version>
<scope>test</scope>
</dependency>
- 语法格式
given().
XXXX
when().
XXXX
then().
XXXX
- given 设置测试预设(包括请求头、请求参数、请求体、cookies 等等)
- when 所要执行的操作(请求方法)
- then 请求结束之后的操作(解析响应结果、断言)
get请求
直接在URL地址后面拼接参数
given().
when().
get(“http://httpbin.org/get?phone=13323234545&password=123456”).
then().
log().body();
通过queryParam方法添加参数
given().
queryParam(“mobilephone”,“13323234545”).
queryParam(“password”,“123456”).
when().
get(“http://httpbin.org/get”).
then().
log().body();
post请求
1. form表单参数类型
Content-Type:application/x-www-form-urlencoded
given().
header("Content-Type","application/x-www-form-urlencoded").
body("hello=1111&&world=2222")
when().
post("http://httpbin.org/post").
then().
log().body();
2. json参数类型
Content-Type:application/json
String jsonData = "{\"mobilephone\":\"13323234545\",\"pwd\":\"123456\"}";
given().
header("Content-Type","application/json").
body(jsonData).
when().
post("http://www.httpbin.org/post").
then().
log().body();
3. xml参数类型
Content-Type:application/xml
String xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"<suite>\n" +
" <class>测试xml</class>\n" +
"</suite>";
given().
header("Content-Type","application/xml").
body(xmlStr).
when().
post("http://www.httpbin.org/post").
then().
log().body();
4. 上传文件
Content-Type: multipart/form-data
当我们需要传输大容量的数据到服务端时,我们通常使用 multipart 表单数据技术。REST-assured提供了一个叫做 multiPart 的方法可以让我们指定文件(file)、字节数组(byte-array)、输入流或者是上传文件
given().
multiPart(new File("D:\\match.png")).
when().
post("http://httpbin.org/post").
then().
log().body();
注:此时不需要指定请求头Content-Type
三、常见面试题
简述token、 cookie 和session的区别?
说说你们项目采用的鉴权方式?
四、作业
通过REST-assured完成:登录、商品搜索、商品详情页、添加购物车接口请求,代码提交过来即可