Чи можна надіслати масив із розширенням Chrome Postman?


246

Я використовую розширення Chrome для Postman для тестування мого API та хотів би надіслати масив ідентифікаторів через пошту. Чи є спосіб надіслати щось перелічити це як параметр у Postman?

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

1
Я досить впевнений, що правильний спосіб надіслати масив - це "певним чином, що конкретний сервер, на який ви його надсилаєте, отримає його правильно". Це пояснює різні варіанти відповідей нижче, але все було б трохи корисніше, якби всі (чи хтось?) Сказав, який бек-енд використовують.
mwardm

Відповіді:


438

Потрібно суфіксувати ім’я змінної []таким чином:

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, вам потрібно скористатися описаним вище методом, оскільки передача даних як сировини (json) не буде працювати. У пошті REST-клієнта є помилка (принаймні, я отримую помилку, коли користуюсь 0.8.4.6).


3
На всякий випадок, коли хтось запитує, як додати хеші замість просто масиву, ідея все одно та сама, просто змініть індекси на хеш-ім'яmy_array[hashname] value1
Bryan P

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

1
жоден з них не працював, але я з’ясував, що лише додавання імені масиву працює у 2019 році. [ prntscr.com/nqubpi]
Shreyan Mehta

71

Для мене не працювали з масивом [0], масивом 1 , .. або масивом [], масивом [], .... Це працює просто: введіть тут опис зображення


8
Додавши декілька ключів з тим самим іменем, сервер отримає лише останній
evilReiko

скажіть, будь ласка, як надсилати лише один елемент userid [0] у формі даних. якщо я передаю userid [] / userid [0] в ключовому полі, він береться як рядок!
Джонсі

1
з ядром asp.net 2.2, він отримує всі елементи масиву з цим рішенням
ahong

у 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": "Точка", "координати": [126.972967, 37.54171],} набрати в loc [type]: Point, loc [координати] []: 126. ., loc [координати] []: 37 ... на Postman thx !!
JillAndMe

Це дуже корисно, оскільки коли вам потрібно надсилати файли, "сировинний" формат Поштальона просто не працюватиме. Вам потрібно використовувати формат даних форми.
arunt

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

Це зробило для мене хитрість, але встановити заголовок Accept було не потрібно
janv8000

Це була потрібна мені відповідь.
Філіп Брендон Холмс

Мій метод API очікує Список <string> і це зробило роботу.
Віра перемагає

20

Встановіть Body як сировину та сформуйте масив наступним чином:

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


{"питання": "Що таке столиця Індії", "знаки": 1, "варіанти": ["Мумбаї", "Пуне", "Нью-Делі", "Джайпур"], "правильно": "Нью-Делі" }
Пратамеш Більше

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

Якщо ви хочете масив диктів, спробуйте це: введіть тут опис зображення


2
Для мене те, що працювало на node.js / мангуста, - social_links[0].nameце
помітний

У вашому прикладі що робити, якщо nameце також масив? Я спробував щось на зразок програми social_links[0]name[0]Django REST Framework (вкладений записуваний серіалізатор з багато-багатьма відносинами), і це не спрацювало.
Натан

11

це працювало для мене. для передачі масиву об'єкта Item {ItemID, ColorID, SizeID, Quntity}

Дані листоноші


10

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

Якщо ви хочете надіслати, наприклад, масив "повідомлень" разом із Postman, у кожному зі списком пар ключів / значень, введіть, наприклад, повідомлення [] [причину] у поле KEY, а значення причини - у поле VALUE:

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

Сервер отримає:

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

Це зробило трюк ... але лише тоді, коли я перевірив варіант форми даних.
Nowdeen

8

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

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

У варіанті вибору тіла

x-www-form-urlencoded

і вставити дані як json масив

user_ids : ["1234", "5678"]

Тільки той, хто працював для мене, використовуючи дані форми! Неможливо використовувати сировину, оскільки я надсилаю зображення
Метт Уіллз

Єдиний працював і для мене. Для повних новачків: натисніть x-www-form-urlencoded => групове редагування => UserNames: ["UserName1", "UserName2", "UserName3"]
Denys Moroz,

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

Виберіть дані форми або кодовані URL-адреси та використовуйте той самий ключ "user_ids". Сервер повинен отримувати його як масив.


Схоже, через помилку в Chrome, яка помилково надсилає заголовок XML, навіть коли ви вибираєте JSON у Postman, вам потрібно додати Content-typeзаголовок зі значенням application/json.
Jason Swett

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.