在 POSTMAN 中,我如何获取响应标题项的子字符串?
Posted
技术标签:
【中文标题】在 POSTMAN 中,我如何获取响应标题项的子字符串?【英文标题】:In POSTMAN how do i get substring of response header item? 【发布时间】:2019-06-02 17:57:24 【问题描述】:我正在使用邮递员获取响应头值,如下所示:
var data = postman.getResponseHeader("Location") . //value is "http://aaa/bbb" for example
我可以通过console.log(data)
轻松打印值。
但是,我真正想要的是“bbb”。所以我需要一些substring()
类型的函数。显然 'data' 不是 javascript 字符串类型,因为例如 data.substring(10)
总是返回 null。
在这种情况下我需要做什么吗?
如果有任何邮递员 API 文档可以解释这一点?
【问题讨论】:
你得到的正是这个错误吗? 其实只需要先toString()把它转换成javascript字符串,然后就可以自我解释了。 这能回答你的问题吗? How can I get last characters of a string 【参考方案1】:您可以在 postman 中设置环境变量。尝试类似
var data = JSON.parse(postman.getResponseHeader("Location"));
postman.setEnvironmentVariable("dataObj", data.href.substring(10));
【讨论】:
不,这不是解决方案,我在 SO 的其他地方看到了相同的解决方案。我的标头没有返回 json 对象。 满足我的特定需求,谢谢【参考方案2】:一些初步想法 - 我需要像 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);
您是否明白这里的意思,“拆分”是为您提供一些值数组的选择。 如果您要拆分的文本总是给出相同的数组长度,那么应该很容易捕捉到正确的数字
【讨论】:
【参考方案3】:您可以在这里轻松获得 JavaScript 的全部灵活性,因此只需拆分字符串并使用最后一个 /
之后的部分:
var data = pm.response.headers.get("Location").split("/").pop());
如果您需要更深入的 JavaScript 内部示例,请参阅 W3 学校的 split 和 pop 文档。
【讨论】:
以上是关于在 POSTMAN 中,我如何获取响应标题项的子字符串?的主要内容,如果未能解决你的问题,请参考以下文章
我需要获取 API 以从响应中获取与 POSTMAN 中的结果相同但失败的原始值?
Postman / pm api sendRequest 命令:如何等到响应返回后再填充变量?
使用 Jquery AJAX Web 方法发送 RAW TEXT 数据并获取 HTML 响应的 POST 方法并使用 POSTMAN 检查