postman使用变量:

之前我们请求里面的主机地址都是localhost,表示本机。而在实际测试过程中,服务器地址往往并非是在本机上的,这时候就需要用到变量。

postman支持多个测试环境,一个环境里可以配置多个变量。

postman的变量主要分两种类型:

① 环境里面的变量

- 点击界面右上角的齿轮图标,选择Manage Environments

- 在弹出对话框中,点击Add按钮,填写环境名ENVIRONMENT NAME  、VARIABLE、CURRENT VALUE   如 :server1   serverip    http://localhost

               - 这样一套环境就创建好了。创建好厚,就需要使用 可以将所有请求的url中的主机名localhost替换为为变量名{{server1}}  如 https://{{server1}}/api/pagenum

               - 注意:双花括号将变量名括起来,双花括号就表示里面是一个变量。

               - 当进行测试时,若使用的是本机的API服务,那就选择名为server1配置的环境;若使用不是本地的,就选择server2的环境,postman就会使用不同环境里面的变量对应的值。

② 全局变量

- 有时候,有些变量,我们并不需要配置到很多套环境里,因为基本上这就是一个固定值,要修改的话,所有的环境里面都要修改。

- 我们没有必要创建变量到环境中,可以创建一个全局变量,全局变量与我们选择的环境无关。

- 点击界面右上角的齿轮图标,选择Manage Environments

- 在弹出对话框中,点击Globals,加入全局变量名和变量值  如:course_add             {'name':'初中数学', 'desc':111, 'display_idx':1}

- 然后我们可以在API请求的body中将参数的value值修改为用变量替代即可。如  {{course_add}}

HTTP抓包:

在进行接口测试时,我们难免要用到fiddler工具来抓包:

http抓包,就会使用到fiddler。目前有两种抓包类型:

① 抓浏览器的包     我们需要指定浏览器的代理。以Chrome浏览器为例,进入设置 === 高级选项 ===打开代理设置 ===勾选使用代理服务器设置地址和端口

② 抓手机上的包     同样需要在手机上设置代理。填入fiddler所在机器的IP地址和代理服务器端口(默认8888)。注意:电脑wifi和手机所连接的wifi应处于同一个网络环境。

这样配置好,就可以抓http包了。

另外如果想抓取https包,相应的需要下载fiddler证书将其导入浏览器中或手机上安装fiddler证书,才可抓取哦!

cookie和session: 

        做web api测试时,可能会接触到cookie和session。

cookie是我们在访问一个网站时,通常由网站服务器返回的一种标记为cookie类型数据。要求我们存储在浏览器所在电脑上。

以后每次访问本网站,浏览器都会在http请求中将该数据发送过来。

  session也叫会话,某用户登录后,服务端就会认为创建了一个会话session。另一个用户登录就会创建另一个session。

为了标志不同的会话,服务端后面生成一个叫sessionid的东西,标志这次登录的所有后续http消息交互。

sessionid通常都保存在数据库中,并且咳哟存储该sessionid的一系列信息,如 用户名、权限等。

session通常用在web应用中,就是浏览器里面的网页应用。作为一种验证用户权限的机制:能根据sessionid,从而知道该用户是否有相应的权限访问相应的资源。

sessionid是如何返回给客户端的呢?  --------

通过http响应里面的Set-Cookie头部信息,要求浏览器保存到cookie中。

随后,客户端每次访问同一个网站,都会将该cookie里面的内容放到http头部中,当然sessionid也在里面     。即Set-Cookie中存储了sessionid

所以服务端根据sessionid,到表中能够查到相应的记录,就知道了对应的是哪个用户登录。

总结:cookie主要用来存储用户的一些信息,存储在浏览器中

session机制利用了cookie的功能 sessionid存储在数据库中;session弊端就是:服务器有一定压力,性能上会有损耗。

token:是数据信息和验证信息的一串字节数据。而token是你们公司的业务服务器生成的。

- hash算法产生token

- 数据信息改变,验证信息也会改变,HMAC算法

- 密钥 + data = HMAC

生成的token包含了别人无法伪造的验证数据,可以用来验证这个token是否是我这个业务服务器生成的。

token验证的逻辑如下:

1 - 客户端发送请求给服务器,服务器接收并验证后,产生一个token

2- token里面包含了一些关于这用户的数据信息以及验证token有效性的数据,服务器将token返回给客户端

3 - 客户端得到token后,以后每次业务请求都要带上token

4 - 通常放在http请求头Authenrization中,服务端接到请求,就会验证token是否是自己签发的。验证方法同样是hmac(密钥 + 数据)= 验证信息,计算出来验证信息和token里面的验证信息是否一致。

注意:公钥可以用来加密,私钥可以用来解密;私钥可以用来签名,公钥可以用来验证签名。

好处:一旦登陆后,后续只要把请求带过来,验证通过。

token的优点:不需要通过数据库验证,极大的提高了速度

token使用场景:① 防止表单重复提交  ② 跨站点请求伪造

WebAPI之postman变量和session/token的更多相关文章

  1. Postman实现数字签名,Session依赖, 接口依赖, 异步接口结果轮询

    Script(JS)为Postman赋予无限可能 基于Postman 6.1.4 Mac Native版 演示结合user_api_demo实现 PS 最近接到任务, 要把几种基本下单接口调试和持续集 ...

  2. cookie,session,token的定义及区别

    参考了很多文章总结的. 1.cookie(储存在用户本地终端上的数据) 服务器生成,发送给浏览器,浏览器保存,下次请求同一网站再发送给服务器. 2.session(会话) a.代表服务器与浏览器的一次 ...

  3. 静态变量和Session

    静态变量: Application级别的,不同客户端访问同一个变量. Session:对于每个访问的客户端是独立的,都有一个唯一的SessionID.也就是说,不同客户端下,都可以有一个Session ...

  4. MySQL设置global变量和session变量

    1.在MySQL中要修改全局(global)变量,有两种方法: 方法一,修改my.ini配置文件,如果要设置全局变量最简单的方式是在my.ini文件中直接写入变量配置,如下图所示.重启数据库服务就可以 ...

  5. cookie, session, token 是什么 以及相应的安全考量

    Cookie cookie 最常见的是用来保存一些账号信息,比如下图里的 记住账号 就是记录到了cookie里面 cookie 更主要的是针对和server通信的,我们知道http 是无状态的,那如果 ...

  6. Session, Token and SSO 有什么区别

    Session, Token and SSO 有什么区别 Basic Compareation Session-based Authentication In Session-based Authen ...

  7. Python Web学习笔记之Cookie,Session,Token区别

    一.Cookie,Session,Token简介 # 这三者都解决了HTTP协议无状态的问题 session ID or session token is a piece of data that i ...

  8. (转载)session token机制

    http://blog.chinaunix.net/uid-26642709-id-3061264.html 使用session token时,必须用struts2表标签库,不能用html 通过ses ...

  9. nodejs 剪切图像在上传,并保存到指定路径下(./public/img/' + req.session.token + '.jpg‘)

    前jQuery端接收数据 function upAvatar(img){ console.log(img); // data:image/jpeg;base64,/9j/4AAQSkZJRgABAQA ...

随机推荐

  1. Ansible之templates模板

    一.jinja2简介解 Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来源于Djanjo的模板引擎,并扩展了其语法和一系列强大的功能.ansible的模板配置文件就是用jinja2 ...

  2. count的一些用法

    count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL  count(1)包括了所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL  count(列名)只包 ...

  3. Java,你告诉我 fail-fast 是什么鬼?

    本篇我们来聊聊 Java 的 fail-fast 机制,文字一如既往的有趣哦. 01.前言 说起来真特么惭愧:十年 IT 老兵,Java 菜鸟一枚.今天我才了解到 Java 还有 fail-fast ...

  4. basename 和 dirname

    basename将目录路径去掉,返回文件的实际文件名(此处也可以是最后一级目录).如与$0一起 if [ $? -eq 0 ]; then cd - ; mv `basename $0` test1. ...

  5. ubuntukylin16.04LTS(乌班图麒麟版长期支持版,并非银河麒麟)安装体验

    最近,国产银河麒麟版在政府部门推广使用.我有幸接触了,感觉还是不错的.这次政府软件正版化整改中,也列入了windows和银河麒麟的选项.我想试安装一下,可是没找到.就近找了它的类似系统ubuntuky ...

  6. 配置k8s集群context-rbac实践

    说明 在openshift环境中,可以通过oc project {project_name}命令来切换project,那么在k8s中式如何切换namespace的呢?(ocp的project即相当于k ...

  7. html基础——a标签

    a标签:超链接/锚点链接  实现页面跳转  只占据自己内容大小的位置 超链接: 使用 target="_self":表示在本页面跳转到 href 中的地址 target=" ...

  8. 三维目标检测论文阅读:Deep Continuous Fusion for Multi-Sensor 3D Object Detection

    题目:Deep Continuous Fusion for Multi-Sensor 3D Object Detection 来自:Uber: Ming Liang Note: 没有代码,主要看思想吧 ...

  9. JavaScript基础目录

    一.JavaScript简介 1.JavaScript用途 2.JavaScript的诞生 3.JavaScript从丑小鸭到金凤凰 4.JavaScript非常好学 5.学习方法 二.Hello W ...

  10. 数据库求闭包,求最小函数依赖集,求候选码,判断模式分解是否为无损连接,3NF,BCNF

    1.说白话一点:闭包就是由一个属性直接或间接推导出的所有属性的集合. 例(1):   设有关系模式R(U,F),其中U={A,B,C,D,E,I},F={A→D,AB→E,BI→E,CD→I,E→C} ...