在 Postman 中制作动态名称文本字段

Posted

技术标签:

【中文标题】在 Postman 中制作动态名称文本字段【英文标题】:Make dynamic name text field in Postman 【发布时间】:2014-11-16 09:39:33 【问题描述】:

我正在使用Postman 对服务器进行 REST API 调用。我想让名称字段动态化,这样我每次都可以使用唯一名称运行请求。


  "location":
  
    "name": "Testuser2", // this should be unique, eg. Testuser3, Testuser4, etc
    "branding_domain_id": "52f9f8e2-72b7-0029-2dfa-84729e59dfee",
    "parent_id": "52f9f8e2-731f-b2e1-2dfa-e901218d03d9"
  


【问题讨论】:

你的问题是? 你的问题是什么? 我的问题是我想让“name”字段动态化,所以当我运行这个脚本时,它会成功运行而不是错误“name is already taken” 所以你需要一个代码来创建上面动态(随机)生成的名称字段的json数据吗?好的,到目前为止你尝试了什么? @yazan 我不知道如何生成随机数据?我没有什么可以尝试随机数据的。所以请建议我如何解决这个问题? 【参考方案1】:

对于任何要对我投反对票的人,这篇文章是在与 OP 的 cmets 讨论之前发布的(见下文)。我将其保留在原位,因此最终描述他需要什么的 OP 的评论不会从问题中删除。


据我了解,您正在寻找的是一个基本解决方案。假设:

您正在开发某种需要测试数据的脚本 name 字段在每次运行时都应该是唯一的

如果您的问题更具体,那么我可以给您更具体的答案,但这是我目前所能做的最好的。


var counter = location.hash ? parseInt(location.hash.slice(1)) : 1; // get a unique counter from the URL
var unique_name = 'Testuser' + counter; // create a unique name
location.hash = ++counter; // increase the counter by 1

您可以通过查看地址栏并将URL从以#1结尾的URL更改为#5等来强制更改计数器。

然后您可以在构建对象时使用变量name

var location = 
    name: unique_name,
    branding_domain_id: 'however-you-currently-get-it',
    parent_id: 'however-you-currently-get-it'
;

【讨论】:

嗨,乔,谢谢你的帮助,你是对的,我使用了随机名称字段,但使用的是 json 格式。因为我在 postman 工作,这里我使用的是 json 格式,所以我可以在 postman 中将你的代码与我的脚本一起使用吗? @manoj 我不知道,我以前从未听说过 Postman :-) JSON 是一种数据存储语言,它不能进行任何类型的编程。我假设您使用的是 javascript,因为您在没有任何上下文的情况下提到了 JSON,但显然您不是。您可能无法使用任何答案,但如果您将问题标记为 Postman 或只是提到您正在使用它,那将节省我们俩的时间:-) @manoj 我已经为您更新了您的问题,以便更具体地满足您的需求,并为您正确标记【参考方案2】:

你想在 Postman 中使用Dynamic Variables。

您发布的 JSON 如下所示:


  "location":
  
    "name": "$guid", 
    "branding_domain_id": "52f9f8e2-72b7-0029-2dfa-84729e59dfee",
    "parent_id": "52f9f8e2-731f-b2e1-2dfa-e901218d03d9"
  


请注意,这将为您提供一个 GUID(您还可以选择使用整数或时间戳),并且我目前不知道注入字符串的方法(例如,从测试文件或数据生成实用程序)。

【讨论】:

上述“动态变量”链接并不直接指向信息。请改用this link。 Postman 现在有一个 fakerjs 模块的子集,因此您可以在响应正文中使用 $randomFullName。这也是使用learning.postman.com/docs/postman/scripts/…的链接 @Samir:他们一直在更改 URL!这是 Postman Learning 关于“动态变量”的文章的最新链接:learning.postman.com/docs/postman/variables-and-environments/…【参考方案3】:

在 Postman 中,您可以传递 0 到 1000 范围内的随机整数,在您的数据中您可以将其用作


  "location":
  
    "name": "Testuser$randomInt",
    "branding_domain_id": "52f9f8e2-72b7-0029-2dfa-84729e59dfee",
    "parent_id": "52f9f8e2-731f-b2e1-2dfa-e901218d03d9"
  


【讨论】:

【参考方案4】:

这件事只需要我的 5 美分。使用 randomInt 时,数字最终可能会出现在数据库中,这可能会导致问题。 解决方案(至少对我而言)是改用 $timestamp。

示例:


    "username": "test$timestamp",
    "password": "test"

【讨论】:

【参考方案5】:

在前置请求中添加以下文本:

var myUUID = require('uuid').v4(); pm.environment.set('myUUID', myUUID);

并在任何你想要的地方使用 myUUID 喜欢

名称:“myUUID”

它将为每个请求生成一个随机的唯一 GUID

【讨论】:

【参考方案6】:
var uuid = require('uuid');
pm.globals.set('unique_name', 'testuser' + uuid.v4());

将上述代码添加到预请求选项卡。 这是您可以为后续的 api 调用重用唯一名称。

Dynamic variable 像 randomInt,或者 guid 是动态的,即:你不知道请求中发送了什么。没有办法再次引用它,除非它被发回作为回应。即使你将它存储在一个变量中,它仍然是动态的

另一种方法是:

var allowed = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
var shuffled_unique_str = allowed.split('').sort(function()return 0.5-Math.random()).join('');

请参阅link 了解更多选项

【讨论】:

以上是关于在 Postman 中制作动态名称文本字段的主要内容,如果未能解决你的问题,请参考以下文章

postman使用动态token发post请求小结

当字段名称是动态的时,vba 制作表格

动态高度标签和文本字段

如何动态更改 MDDialog KivyMD 中的文本字段?

postman发送post请求

制作删除按钮以删除 inputtext 字段中的文本