在POSTMAN中,我如何获取响应标题项的子字符串?

时间:2019-01-08 04:04:02

标签: postman postman-pre-request-script

我正在使用邮递员来获取响应标头值,如下所示:

var data = postman.getResponseHeader("Location") . //value is "http://aaa/bbb" for example 

我可以轻松地通过console.log(data)打印该值。

但是,我真正想要的是“ bbb”。因此,我需要一些substring()类型的函数。显然,“数据”不是JavaScript字符串类型,因为例如data.substring(10)始终返回null。

有人在这种情况下我需要做什么吗?

是否存在任何对此进行解释的邮递员API文档?

3 个答案:

答案 0 :(得分:1)

一些最初的想法-我需要“位置”标头的特定部分(例如OP),但我还必须从该特定部分获得特定值。 我的标题看起来像这样

https://example.com?code_challenge_method=S256&redirect_uri=https://localhost:8080&response_type=code&state=vi8qPxcvv7I&nonce=uq95j99qBCGgJvrHjGoFtJiBoo

我需要将“状态”值作为变量传递给下一个请求

var location_header = pm.response.headers.get("Location");
var attributes = location_header.split('&');

console.log(attributes);

var len = attributes.length;
var state_attribute_value = ""
var j = 0;
for (var i = 0; i < len; i++) {
    attribute_key = attributes[i].split('=')[0];
    if (attribute_key == "state") {
        state_attribute_value = attributes[i].split('=')[1];
    }
    j = j + 1;
}
console.log(state_attribute_value);
pm.environment.set("state", state_attribute_value);

在这里您可能会明白,“ split”是为您提供一些值数组的选择。 如果您要拆分的文本始终具有相同的数组长度,那么应该很容易捕获正确的数字

答案 1 :(得分:1)

您可以在这里轻松掌握JavaScript的全部灵活性,因此只需拆分String并在最后一个/之后使用部分即可:

var data = pm.response.headers.get("Location").split("/").pop());

如果您需要更深入的JavaScript内部示例,请参阅W3学校的splitpop文档。

答案 2 :(得分:0)

您可以在邮递员中设置环境变量。尝试类似

var data = JSON.parse(postman.getResponseHeader("Location"));
postman.setEnvironmentVariable("dataObj", data.href.substring(10));