是否可以使用 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/json
的 Content-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这是我的解决方案:
使用表单数据并编辑如下:
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 扩展发送数组?的主要内容,如果未能解决你的问题,请参考以下文章