0

我正在使用邮递员发送一个以正文作为包含文件和文本的表单数据的发布请求。见下图:

发布请求正文

我想 json.stringify 整个身体,但我无法弄清楚如何在预请求脚本中执行此操作。由于环境变量只能是主体的一部分,因此具有文件会使它变得更加棘手。

4

1 回答 1

1

我不确定我是否理解这个问题。在邮递员中,请求是一个 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
}

现在,如果您想获取正在上传的文件的二进制文件,那将是不可能的。正如在这个线程中看到的:

出于几个原因,我们不允许访问预请求脚本中的文件内容。

  1. 我们希望在发送请求之前延迟加载文件内容。
  2. 在预请求脚本完成之前,请求正文不会真正解析。因此,即使我们愿意,我们也无法在预请求脚本中给出请求的实际正文。

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

于 2019-05-24T09:35:53.657 回答