【问题标题】:Make dynamic name text field in Postman在 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 我不知道如何生成随机数据?我没有什么可以尝试随机数据的。所以请建议我如何解决这个问题?

标签: json postman


【解决方案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(您还可以选择使用整数或时间戳),并且我目前不知道注入字符串的方法(例如,从测试文件或数据生成实用程序)。

【讨论】:

【解决方案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 了解更多选项

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-11
          • 1970-01-01
          • 1970-01-01
          • 2013-01-31
          相关资源
          最近更新 更多