5

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

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

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

但是,我真正想要的是“bbb”。所以我需要某种substring()类型的功能。显然“数据”不是javascript字符串类型,因为data.substring(10)例如总是返回null。

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

如果存在任何解释这一点的邮递员 API 文档?

4

3 回答 3

2

您可以在 postman 中设置环境变量。尝试类似的东西

var data = JSON.parse(postman.getResponseHeader("Location"));
postman.setEnvironmentVariable("dataObj", data.href.substring(10));
于 2019-01-08T04:12:07.337 回答
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);

您是否明白这里的意思,“拆分”是为您提供一些值数组的选择。如果您要拆分的文本始终给出相同的数组长度,则应该很容易捕捉到正确的数字

于 2020-03-27T07:52:20.810 回答
1

您可以在这里轻松获得 JavaScript 的全部灵活性,因此只需拆分 String 并使用 last 之后的部分/

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

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

于 2020-03-30T13:54:57.740 回答