运行预请求脚本以对请求主体进行字符串化

时间:2019-01-28 21:41:28

标签: postman stringify postman-pre-request-script

我正在使用邮递员发送包含正文和表单内容(包含文件和文本)的邮寄请求。参见下图:

post request body

我想对整个主体进行json.stringify,但是我无法在请求前脚本中弄清楚如何做到这一点。由于环境变量只能是人体的一部分,因此拥有文件会使它更加棘手。

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解问题。在邮递员中,请求是一个JavaScript对象。如果您要对请求进行分类,那么我认为您正在尝试获取此请求:

propertyOne=valueOne&propertyTwo=ValueTwo

之外:

const request = {
    propertyOne: 'valueOne',
    propertyTwo: 'ValueTwo'
};

简单的方法就是迭代对象的属性并写入字符串:

function stringifyRequest(object) {
    let resultString = '';
    for (var property in object) {
        if (object.hasOwnProperty(property)) {
            let tempString = `${property}=${object[property]}`;
            resultString = resultString ? `${resultString}&${tempString}` : tempString;
        }
    }
    return resultString
}

现在,如果要获取要上传的文件的二进制文件,将不可能。如this thread所示:

  

在预请求中,我们不授予对文件内容的访问权限   脚本,出于某些原因。

     
      
  1. 我们希望延迟在请求之前立即加载文件内容   已发送。
  2.   
  3. 直到预请求,请求正文才真正解析   脚本已完成。因此,即使我们愿意,我们也不能放弃   请求前脚本中的请求的实际内容。
  4.   

他们最终可能会改变它,但是我找不到任何迹象。该线程中的一位用户建议使用insomnia,您可以检查出它是否更适合您的需求。