Можно ли отправить массив с расширением Postman Chrome?


247

Я использовал расширение Postman Chrome для тестирования своего API и хотел бы отправить массив идентификаторов по почте. Есть ли способ отправить что-то перечислить это в качестве параметра в Почтальон?

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

1
Я вполне уверен, что правильный способ отправки массива - это «каким-то образом, что конкретный сервер, на который вы его отправляете, получит его правильно». Это объясняет различия в ответах ниже - но было бы немного полезнее, если бы все (или кто-нибудь еще?) Сказали, какой сервер они используют.
mwardm

Ответы:


439

Вам необходимо добавить суффикс имени вашей переменной []следующим образом:

send_array_param_with_postman

Если это не сработает, попробуйте не указывать индексы в скобках:

my_array[]  value1
my_array[]  value2

Примечание:

  • Если вы используете упакованное приложение почтальона , вы можете отправить массив, выбрав raw/ json(вместо form-data). Также обязательно установите Content-Typeкак application/jsonна Headersвкладке. Вот пример для необработанных данных {"user_ids": ["123" "233"]}, не забывайте цитаты!

  • Если вы используете REST-клиент почтальона, вы должны использовать метод, который я описал выше, потому что передача данных как raw (json) не будет работать. В REST клиенте почтальона есть ошибка (по крайней мере, я получаю ошибку, когда использую 0.8.4.6).


3
На всякий случай, если кто-то спрашивает, как добавить хеш вместо просто массива, идея остается прежней, просто измените индексы на хеш-имяmy_array[hashname] value1
Брайан П.

5
my_array[] valueсоздаст параметр массива с предоставленными значениями, как key => [value]. my_array[key] valueсоздаст хеш, как{key => value} .
MARC.RS

1
ни один из них не сработал, но я понял, что добавление имени массива работает в 2019 году. [ prntscr.com/nqubpi]
Shreyan Mehta

72

Для меня не работал с массивом [0], массивом 1 , .. или массивом [], массивом [], .... Работает проще: введите описание изображения здесь


8
Добавив несколько ключей с одинаковым именем, сервер получит только последний
evilReiko

подскажите пожалуйста как отправить только один элемент userid [0] в form-data. если я передам userid [] / userid [0] в ключевое поле, оно будет взято как строка!
Джонси

1
с asp.net core 2.2 он получает все элементы массива с этим решением
ахонг

в Django я смог получить все файлы с: request.FILES.getlist ('usersId'), используя этот метод
Swasidhant

44

Вот мое решение:

используйте данные формы и отредактируйте, как показано ниже:

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

и вы получите массив, как это:

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

Большой! наконец, я могу отправить объект "loc": {"type": "Point", "координаты": [126.972967, 37.54171],} для ввода в loc [тип]: точка, loc [координаты] []: 126 .. ., loc [координаты] []: 37 ... почтальон, спасибо!
JillAndMe

Это очень полезно, так как, когда вам нужно отправить файлы, «чистый» формат Postman просто не будет работать. Вам нужно использовать формат данных формы.
около

32

У меня тоже была эта проблема, и я решил ее следующим образом:

1 - Переходя к настройке заголовка запроса и добавив следующее:

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

2 - Чтобы отправить массив json, я перешел в необработанный формат json и установил user_ids в массив:

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

Это
помогло

Это был ответ, который мне был нужен.
Филипп Брэндон Холмс

Мой метод API ожидает List <string>, и это сделало свою работу.
Faith Wins

20

Установите Body как raw и сформируйте массив следующим образом:

введите описание изображения здесь


{"question": "Что такое столица Индии", "marks": 1, "options": ["Mumbai", "Pune", "New Delhi", "Jaipur"], "correct": "New Delhi" }
Prathamesh More

17

Как уже упоминалось @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

17

Если вам нужен массив dicts, попробуйте это: введите описание изображения здесь


2
Для меня то, что работало для node.js / mongoose, это social_links[0].nameдополнительный период
Songtham T.

В вашем примере, что, если nameэто также массив? Я попробовал что-то вроде social_links[0]name[0]в Django REST Framework (вложенный записываемый модель-сериализатор с отношениями «многие ко многим»), и это не сработало.
Натан


10

Важно знать, что поле VALUE может содержать только цифровое значение (без спецификаторов).

Если вы хотите отправить, например, массив «сообщений» с почтальоном, каждое из которых имеет список пар ключ / значение, введите, например, messages [] [reason] в поле KEY, а значение причины - в поле VALUE:

введите описание изображения здесь

Сервер получит:

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

Это помогло ... но только когда я проверил опцию данных формы.
Сегодня

8

в наборе заголовков

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

В теле выберите вариант

х-WWW-форм-urlencoded

и вставьте данные в виде массива JSON

user_ids : ["1234", "5678"]

Только тот, который работал для меня, используя данные формы! Не могу использовать raw, так как я тоже отправляю изображения
Мэтт Уиллс

Только один работал и для меня. Для новичков: Нажмите x-www-form-urlencoded => массовое редактирование => Имена пользователей: ["UserName1", "UserName2", "UserName3"]
Денис Мороз

7

Это также работает для списков внутри объекта:

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"
        }
    ]
}

6

Перейдите в заголовок и выберите Content-Type=, application/jsonзатем перейдите в тело и выберите, rawа затем передайте массив.введите описание изображения здесь


5

Выберите либо form-data, либо urlencoded и используйте тот же ключ «user_ids». Сервер должен получить его как массив.


Похоже, из-за ошибки в Chrome, которая ошибочно отправляется с заголовком XML, даже когда вы выбираете JSON в Postman, вы должны добавить Content-typeзаголовок со значением application/json.
Джейсон Светт

5
на случай, если кто-то вернется в поисках ответа, ключ для массива должен быть user_ids [], а не просто user_ids
anguyen

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

Вы можете пройти так. Надеюсь, это кому-нибудь поможет.



0

Я перепробовал все решения здесь и в других постах, но ничего не помогло.

Единственный ответ мне помог:
добавление атрибута [FromBody] перед объявлением параметра в сигнатуре функции:

[Route("MyFunc")]        
public string MyFunc([FromBody] string[] obj)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.