是否可以使用 Postman Chrome 扩展发送数组?

Posted

技术标签:

【中文标题】是否可以使用 Postman Chrome 扩展发送数组?【英文标题】:Is it possible to send an array with the Postman Chrome extension? 【发布时间】:2012-09-27 05:25:17 【问题描述】:

我一直在使用 Postman Chrome 扩展来测试我的 API,并希望通过 post 发送一组 ID。有没有办法在 Postman 中将这个列表作为参数发送?


  user_ids: ["1234", "5678"]

【问题讨论】:

我相当确定发送数组的正确方法是“以某种方式,您将其发送到的 特定 服务器将正确接收它”。这解释了下面答案的变化 - 但如果每个人(或任何人?)都说他们使用的是什么后端,这一切都会更有用。 【参考方案1】:

选择 form-data 或 urlencoded 并使用相同的键“user_ids”。服务器应该以数组的形式接收它。

【讨论】:

看起来,由于 Chrome 中的一个错误,即使您在 Postman 中选择 JSON,也会错误地发送 XML 标头,您必须添加一个值为 application/jsonContent-type 标头。 以防万一有人回来寻找答案,数组的键应该是 user_ids[] 而不仅仅是 user_ids【参考方案2】:

你需要像这样在你的变量名后面加上[]

如果这不起作用,请尽量不要将索引放在括号中:

my_array[]  value1
my_array[]  value2

注意:

如果您使用postman packaged app,您可以通过选择raw / json(而不是form-data)来发送数组。另外,请确保在Headers 选项卡中将Content-Type 设置为application/json。 这是原始数据的示例"user_ids": ["123" "233"],不要忘记引号!

如果您使用postman REST client,您必须使用我上面描述的方法,因为将数据作为原始 (json) 传递将不起作用。 postman REST客户端有一个bug(至少我在使用0.8.4.6时得到了这个bug)。

【讨论】:

万一有人问如何添加哈希而不是数组,思路还是一样的,只需将索引改为哈希名称my_array[hashname] value1 my_array[] value 将使用提供的值创建一个数组参数,如key => [value]。 my_array[key] value 将创建一个哈希,如 key => value 它们都不起作用,但我发现只是添加数组名称在 2019 年起作用。[prntscr.com/nqubpi] 您没有索引的第二个选项,解决了我的问题,谢谢【参考方案3】:

对我来说,array[0], array1, .. 或 array[], array[], ... 不适用于我。 它的工作原理更简单:

【讨论】:

添加多个同名key,服务器只接收最后一个 请告诉我如何在表单数据中只发送一个元素 userid[0]。如果我在一个关键字段中传递 userid[]/userid[0] 它作为一个字符串! 在 asp.net core 2.2 中,它通过这个解决方案接收所有数组元素 在 Django 中,我能够使用以下方法获取所有文件:request.FILES.getlist('usersId')【参考方案4】:

我也遇到了这个问题,通过以下方法解决了:

1 - 转到请求标头配置并添加以下内容:

Accept : application/json, text/plain, */*
Content-Type : application/json;charset=UTF-8

2 - 为了发送 json 数组,我使用原始 json 格式并将 user_ids 设置为数组:

user_ids: ["bbbbbbbbbb","aaaaaaaaaa","987654321","123456789"]

【讨论】:

这对我有用,但是不需要设置 Accept 标头 这就是我需要的答案。 我的 API 方法需要 List 并且完成了这项工作。【参考方案5】:

这是我的解决方案:

使用表单数据并编辑如下:

Key       Value 
box[]      a
box[n1]    b
box[n2][]  c
box[n2][]  d

你会得到一个这样的数组:

"box":"0":"a","n1":"b","n2":["c","d"]

【讨论】:

太棒了!最后我可以发送一个对象 "loc": "type": "Point", "coordinates": [ 126.972967, 37.54171 ], 输入 loc[type]: Point, loc[coordinates][] :126.. ., loc[coordinates][]: 37... on Postman thx!! 这非常有用,因为当您需要发送文件时,Postman 的“原始”格式将不起作用。您需要使用表单数据格式。【参考方案6】:

正如@pinouchon 提到的,您可以在数组索引的帮助下传递它

my_array[0] value
my_array[1] value

In addition to this, to pass list of hashes, you can follow something like:

my_array[0][key1] value1

my_array[0][key2] value2

示例:

To pass param1=[name:test_name, value:test_value, ...]

param1[0][name] test_name

param1[0][value] test_value

【讨论】:

【参考方案7】:

我在这里和其他帖子中尝试了所有解决方案,但没有任何帮助。

唯一的答案帮助了我: 在函数签名中的参数声明之前添加 [FromBody] 属性:

[Route("MyFunc")]        
public string MyFunc([FromBody] string[] obj)

【讨论】:

【参考方案8】:

在标题集中

content-type : application/x-www-form-urlencoded

在正文中选择选项

x-www-form-urlencoded

并以 json 数组的形式插入数据

user_ids : ["1234", "5678"]

【讨论】:

只有一个对我有用的表单数据!由于我也在发送图像,因此无法使用 raw 唯一一个也对我有用 对于完整的新手:按 x-www-form-urlencoded => 批量编辑 => UserNames:["UserName1","UserName2", "UserName3"] 【参考方案9】:

这对我有用。传递 Item 对象数组 ItemID,ColorID,SizeID,Quntity

【讨论】:

【参考方案10】:

这也适用于对象内的列表:

Id:37
IdParent:26
Name:Poplet
Values[0].Id:1349
Values[0].Name:SomeName
Values[1].Id:1350
Values[1].Name:AnotherName

等效的 JSON 将是:


    "Id": 37,
    "IdParent": 26,
    "Name": "Poplet",
    "Values": [
        
            "Id": 1349,
            "Name": "SomeName"
        ,
        
            "Id": 1350,
            "Name": "AnotherName"
        
    ]

【讨论】:

不幸的是,Values[0].Id 对我不起作用,当我检查邮递员正文请求时,它显示“Values[0].Id”=“1349”你知道为什么?【参考方案11】:

将 Body 设置为 raw 并形成如下数组:

【讨论】:

"question" : "什么是印度的首都", "marks" : 1, "options" : [ "Mumbai", "Pune", "New Delhi", "Jaipur" ], “正确”:“新德里”【参考方案12】:

在表单数据中,

   key              value

 user_ids[]         1234
 user_ids[]         5678

【讨论】:

【参考方案13】:

    "data" : [  
        
            "key1" : "value1",
            "key2" : "value2"   
        ,
        
            "key01" : "value01",
            "key02" : "value02"             
        ,
        
            "key10" : "value10",
            "key20" : "value20"   
        
    ]

你可以这样通过。

【讨论】:

【参考方案14】:

重要的是要知道,VALUE 框只允许包含数字值(没有说明符)。

如果你想发送例如一个带有 Postman 的“消息”数组,每个都有一个键/值对列表,输入例如messages[][reason] 放入 KEY 框,reason 值放入 VALUE 框:

服务器将收到:

"messages"=>["reason"=>"scrolled", "tabid"=>"2", "reason"=>"reload", "tabid"=>"1"], "endpoint"=>

【讨论】:

这成功了……但只有当我检查了表单数据选项时。【参考方案15】:

如果你想要一个字典数组,试试这个:

【讨论】:

对我来说适用于 node.js / mongoose 的是 social_links[0].name 请注意额外的 期间 在您的示例中,如果 name 也是一个数组怎么办?我在 Django REST 框架(具有多对多关系的嵌套可写模型序列化器)中尝试了类似 social_links[0]name[0] 的方法,但没有成功。 只要我加一个'.'在索引之后(例如 social_liks[0].name),这适用于 Postman 使用 Spring Rest 的我。 不幸的是,social_link[0].name 对我不起作用,当我检查邮递员正文请求时,它显示“social_link[0].name”=“136”你知道为什么? 如何在 laravel 8 中为此创建自定义请求?【参考方案16】:

转到 Header 并选择 Content-Type = application/json 然后转到 body 并选择 raw 然后传递一个数组。

【讨论】:

【参考方案17】:

我的后端是用 Ruby on Rails 编写的。这就是我使用 Postman 发送数组参数的方式。它对我有用。

更新

我正在使用 x-www-form-urlencoded。我相信它也适用于 form-data

【讨论】:

【参考方案18】:

假设你有下面的对象数组,

features: [
      
        title:  type: String ,
        type:  type: String ,
      ,
    ],

要在邮递员的表单数据上添加值,这样添加

features[title]
features[type]

请查看下面的图片

【讨论】:

【参考方案19】:

这对我有用


 "user_ids":["[1234, 5678]"]

我相信这取决于大部分时间后端是如何设置的。

【讨论】:

以上是关于是否可以使用 Postman Chrome 扩展发送数组?的主要内容,如果未能解决你的问题,请参考以下文章

postman抓包

使用 Postman Chrome 扩展发送多部分/混合内容

chrome怎么打开postman

postman是啥工具

Postman接口调试神器-Chrome浏览器插件

使用Postman在Chrome下进行rest请求测试