Postman使用最佳实践


Postman使用最佳实践

集成了http请求所需的各种设置项,而且还提供了调试工具以及脚本支持。

一. 请求参数设置项

1. 环境变量: 有三种

  • 类型:
    • global variables 整个postman全局变量
    • collection variables 当前集合变量
    • envirement variables 环境变量
  • 影响力
    • envirement > collection > global
  • 建议:
    • 如果使用envirement变量,命名方面最好有区分,别多个集合用同一套

2. 请求参数

请求参数中可以使用上面所设置的环境变量

  • get 参数 (两种格式输入)
    • 普通key value输入
    • 批量输入
  • 鉴权验证
    • 可以继承父层,比如目录或者集合
    • 支持api key、bearer token、basic auth、OAuth等
  • header参数
    • 隐藏的公共头
    • 普通key value输入
    • 批量输入
  • body 参数
    • form-data
    • x-www-form-urlencoded
    • raw 支持text、js、json、html、xml等
    • binary 上传二进制文件
    • GrapQl 一种用于API的查询语言

3. 脚本

  • 请求前脚本
    • 可以层层继承,但每层的作用域是相互独立的
    • 可以对请求的参数校验加密,或者增删改。包括头部
    • 可以设置变量,会更新到设置的参数中
  • 响应后test脚本
    • 对响应消息做测试使用
    • 比如登陆接口,如果是token,可以在这写入环境变量中
  • pm系列 与当前执行的脚本相关的信息
    • info 对象包含与正在执行的脚本有关的信息
      • eventName
      • iteration
      • iterationCount
    • 响应登录结果操作

          if(pm.response.code == 200) {
              var jsonData = pm.response.json();
              if(!jsonData['data']['token']) {
                  return ;
              }
              pm.collectionVariables.set("token", jsonData['data']['token']);
          }
      
    • sendRequest 发送一个异步请求,只能异步。。。

          // Example with a full fledged SDK Request
          const echoPostRequest = {
          url: 'https://postman-echo.com/post',
          method: 'POST',
          header: 'headername1:value1',
          body: {
              mode: 'raw',
              raw: JSON.stringify({ key: 'this is json' })
          }
          };
          pm.sendRequest(echoPostRequest, function (err, res) {
          console.log(err ? err : res.json());
          });
      
    • variables 变量会根据各级变量变化

      在写脚本旁边有提示

    • environment 环境变量
    • collectionVariables 集合变量
    • globals 全集变量
    • request 当前的请求 重要
      • url => URL
      • headers => HeaderList
        • add 添加头
        • remove 删除头
        • upsert 插入
      • mehtod => String https请求方法
      • body => RequestBody
    • response 这个对我来说不太重要
    • test 等
    • 如果不懂其中api有啥,只要知道类型看这===>
  • postman内置模块
  • 例子
    • 设置额外的头部,有时候不想每个请求单独设置的话

        pm.request.headers.add({
            'key': "Header-Name",
            'value': "Header-Value",
        })
      
    • sign hash 或者加密

        let crypto = require("crypto-js");
        let json = JSON.parse(body['raw']); //序列化JSON BODY
        delete json['sign']
        let jsonStr = JSON.stringify(json) + "abcd"
        let sign = ''+ crypto.MD5(jsonStr)
      

3. 调试工具

  • view -> show PostMan console

  • 快捷键 ctrl+alt+c
  • 然后,然后就是个chrome调试工具,其实postman客户端是基于electron开发的桌面工具,electron是基于chrome开源版,所以
  • console.log(process.versions.electron)

4. 其他

  • 可以自己查看官方文档~

5.例子

如果需要可以下载下来,然后导入到自己的postman

6. 最佳实践

  1. 登录成功后获取token,并写入到配置中

       if(pm.response.code == 200) {
           var jsonData = pm.response.json();
           if(!jsonData['data']['token']) {
               return ;
           }
           pm.collectionVariables.set("token", jsonData['data']['token']);
       }
    
  2. renew token with header

       if(pm.response.code == 200) {
           // 检查头部是否存在当前key值,如果有,则替换
           const key = 'Refresh-Token'
           if(pm.response.headers.has(key)) {
               console.log('renew access token')
               pm.collectionVariables.set("token", pm.response.headers.get(key));
           }
       }
    
  3. 自定义request

       if(pm.response.code == 200) {
           var jsonData = pm.response.json();
           if(!jsonData['data']['token']) {
               return ;
           }
           pm.environment.set("token", jsonData['data']['token']);
           var requests = {
               url: pm.environment.get('url')+ "/api/common/auth?token="+ jsonData['data']['token'],//请求url
               method: 'GET',//请求方式
               header: {
                   'Content-Type':'application/json'
               },//请求header
           };
    
           //发送请求,参数:请求信息,响应函数(异常,响应数据)
           pm.sendRequest(requests,function (err, response) {
               var result = response.json();
               console.log(result);
               pm.environment.set("auth", result['data']['auth']);
           });
       }