Postman Chrome扩展程序是否支持发送数组?

352

我一直在使用Postman Chrome扩展程序来测试我的API,并希望通过POST发送一个ID数组。在Postman中有没有一种方法可以将这样的内容作为参数发送?

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

1
我相当确定发送数组的正确方式是“以某种方式发送,使得您要发送到的特定服务器可以正确接收它”。这解释了下面答案的差异 - 但如果每个人(或任何人?)都说出他们正在使用的后端,那么这一切将更加有用。 - mwardm
25个回答

623

你需要在变量名后面加上[]来表示数组,就像这样:

send_array_param_with_postman

如果还是不行,尝试不要把索引放在方括号里:

my_array[]  value1
my_array[]  value2

注意:

  • 如果您使用的是Postman打包应用程序,您可以通过选择raw/json(而不是form-data)来发送数组。同时,请确保在Headers选项卡中将Content-Type设置为application/json。以下是一个原始数据的示例:{"user_ids": ["123", "233"]},不要忘记引号!

  • 如果您使用的是Postman REST客户端,您必须使用我上面描述的方法,因为将数据作为原始数据(JSON)传递将无法正常工作。在Postman REST客户端中存在一个错误(至少当我使用0.8.4.6时会出现错误)。


3
如果有人问如何添加哈希而不仅仅是数组,那么思路仍然相同,只需将索引更改为哈希名称 my_array[hashname] value1 - Bryan P
6
my_array[] value会创建一个带有所提供值的数组参数,形式为key => [value]my_array[key] value会创建一个散列(hash),形式为{key => value} - MARC.RS
1
没有一个方法起作用,但我发现在2019年只需添加数组名称即可。[http://prntscr.com/nqubpi] - Shreyan Mehta
1
你的第二个选项没有索引,解决了我的问题,谢谢。 - shubham mishra

96

使用array[0]、array1、...或array[]、array[]、...对我没有效果。 它的使用更简单: 在此输入图片描述


16
通过添加多个相同名称的键,服务器只会接收到最后一个。 - evilReiko
1
请告诉我如何仅发送表单数据中的一个元素userid[0]。如果我在键字段中传递userid[]/userid[0],它会被视为字符串! - Johncy
3
使用 ASP.NET Core 2.2,采用此解决方案可以接收所有数组元素。 - ahong
在 Django 中,我可以使用以下方法获取所有文件:request.FILES.getlist('usersId')。 - Swasidhant

74
如果您想要一个字典数组,请尝试这样做:输入图像描述

3
针对 Node.js / Mongoose,能够起作用的是 social_links[0].name,请注意额外的 句点 - Songtham T.
在你的例子中,如果name也是一个数组怎么办?我尝试在Django REST框架(具有多对多关系的嵌套可写模型序列化器)中使用类似于social_links [0] name [0]的东西,但它没有起作用。 - Nathan
只要我在索引后面加上 '.'(例如 social_links[0].name),使用 Spring Rest 在 Postman 中对我有效。 - paiego
不幸的是,social_link[0].name 对我不起作用,当我检查 Postman 请求体时,它显示 "social_link[0].name" = "136",你有任何想法为什么吗? - Emad
如何在 Laravel 8 中创建自定义请求? - Azade
对于 Laravel,social_link [0] [name] 应该可以工作。 - Abdelkrim Laloui

60

这里是我的解决方案:

使用 form-data 并按照以下方式进行编辑:

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

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

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

1
太好了!我终于可以发送一个对象 "loc": {"type": "Point", "coordinates": [126.972967, 37.54171]} 到 Postman 上的 loc[type]: Point, loc[coordinates][]:126..., loc[coordinates][]: 37...。谢谢! - JillAndMe
这非常有帮助,因为当您需要发送文件时,Postman的“原始”格式就无法使用了。您需要使用form-data格式。 - arunt
这种解决方案唯一的缺点是,如果您使用数字作为键,则空白的键将成为最后一个键。array [0],array [1],array [],空白的键将是array [2]。 - Trisno Raynaldy

40

需要知道的是,VALUE框只允许包含数字值(无修饰符)。

如果您想使用Postman发送例如一个“消息”数组,每个消息都有一组键/值对,将messages[][reason]输入KEY框和reason的值输入VALUE框:

enter image description here

服务器将收到:

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

这个方法起作用了...但只有当我勾选了表单数据选项时。 - Nowdeen

36

我曾经遇到过同样的问题,通过以下步骤解决了它:

1 - 进入请求头配置,并添加以下内容:

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

2 - 为了发送JSON数组,我转换为原始JSON格式,并将user_ids设置为数组:

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

1
这对我起了作用,设置接受头不是必要的。 - janv8000
这就是我需要的答案。 - Phillip Holmes
我的 API 方法需要 List<string>,这个做到了。 - Faith Wins

29

将Body设置为原始内容,然后按以下方式形成数组:

在此输入图片描述


{ "question" : "印度的首都是什么?", "marks" : 1, "options" : [ "孟买", "浦那", "新德里", "斋普尔" ], "correct" : "新德里" } - Prathamesh More

24

如@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

这对我有用。由于我还需要在请求中发送图像文件,以及对象数组,这就是我所需要的。没有办法以原始格式(JSON)发送图像文件。 - iheathers

19

前往标题并选择 Content-Type = application/json,然后前往正文并选择 raw,然后传递一个数组。在此输入图片描述


17

这对我有用。要传递一个包含{ItemID,ColorID,SizeID,Quntity}的Item对象数组。

Postman数据


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接