Czy można wysłać tablicę z rozszerzeniem Postman Chrome?


246

Korzystam z rozszerzenia Postman Chrome do testowania mojego interfejsu API i chciałbym wysłać tablicę identyfikatorów pocztą. Czy istnieje sposób na przesłanie czegoś z listy jako parametru w Postman?

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

1
Jestem całkiem pewien, że właściwym sposobem wysłania tablicy jest „w pewien sposób, że konkretny serwer, do którego ją wysyłasz, otrzyma ją poprawnie”. To wyjaśnia odmienność odpowiedzi poniżej - ale byłoby to trochę bardziej przydatne, gdyby wszyscy (czy ktokolwiek?) Powiedzieli, z jakiego back-enda korzystają.
— mwardm

Odpowiedzi:


438

Musisz dodać do nazwy zmiennej następującą nazwę []:

send_array_param_with_postman

Jeśli to nie zadziała, spróbuj nie umieszczać indeksów w nawiasach:

my_array[]  value1
my_array[]  value2

Uwaga:

  • Jeśli używasz aplikacji z listonoszem , możesz wysłać tablicę, wybierając raw/ json(zamiast form-data). Upewnij się również, że ustawiłeś Content-Typejak application/jsonna Headerszakładce. Oto przykład surowych danych {"user_ids": ["123" "233"]}, nie zapomnij o ofertach!

  • Jeśli używasz listonoszowego klienta REST , musisz użyć metody opisanej powyżej, ponieważ przekazywanie danych jako raw (json) nie będzie działać. W kliencie REST listonosza jest błąd (przynajmniej dostaję błąd, gdy go używam 0.8.4.6).


3
Na wypadek, gdyby ktoś pytał, jak dodać skróty zamiast tylko tablicy, pomysł jest nadal ten sam, wystarczy zmienić indeksy na nazwę skrótumy_array[hashname] value1
— Bryan P

5
my_array[] valueutworzy parametr tablicy z podanymi wartościami, jak key => [value]. my_array[key] valueutworzy hash, as {key => value}.
— MARC.RS,

1
żaden z nich nie zadziałał, ale doszedłem do wniosku, że dodanie nazwy tablicy działa w 2019 r. [ prntscr.com/nqubpi]
— Shreyan Mehta

71

Dla mnie nie działał z tablicą [0], tablicą 1 , .. lub tablicą [], tablicą [], .... Działa to po prostu: wprowadź opis zdjęcia tutaj


8
Dodając wiele kluczy o tej samej nazwie, serwer otrzyma tylko ostatni
— evilReiko 10.09.17

powiedz mi, jak wysłać tylko jeden identyfikator użytkownika [0] w danych formularza. jeśli podam userid [] / userid [0] w polu klucza, jest to traktowane jako ciąg!
— Johncy

1
z asp.net core 2.2 otrzymuje wszystkie elementy macierzy dzięki temu rozwiązaniu
— ahong

w Django udało mi się uzyskać wszystkie pliki za pomocą: request.FILES.getlist ('usersId'), korzystając z tej metody
— Swasidhant

44

Oto moje rozwiązanie:

użyj danych formularza i edytuj jak poniżej:

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

a otrzymasz tablicę taką jak ta:

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

Wspaniały! w końcu mogę wysłać obiekt „loc”: {„type”: „Point”, „coordinates”: [126.972967, 37.54171],}, aby wpisać loc [typ]: Point, loc [współrzędne] []: 126 .. ., loc [współrzędne] []: 37 ... na Listonoszu dzięki !!
— JillAndMe

Jest to bardzo pomocne, ponieważ kiedy trzeba wysyłać pliki, „surowy” format Listonosza po prostu nie działa. Musisz użyć formatu danych formularza.
— około

32

Miałem również ten problem i rozwiązałem go, wykonując następujące czynności:

1 - Przejście do konfiguracji nagłówka żądania i dodanie następujących elementów:

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

2 - Aby wysłać tablicę json, poszedłem do surowego formatu json i ustawiłem user_ids na tablicę:

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


To była odpowiedź, której potrzebowałem.
— Phillip Brandon Holmes,

Moja metoda API oczekuje listy <ciąg> i to spełniło zadanie.
— Faith wygrywa

20

Ustaw Body jako surowe i utwórz tablicę w następujący sposób:

wprowadź opis zdjęcia tutaj


{„question”: „Co jest stolicą Indii”, „marks”: 1, „options”: [„Mumbai”, „Pune”, „New Delhi”, „Jaipur”], „correct”: „New Delhi” }
— Prathamesh More

17

Jak wspomniano przez @pinouchon, możesz przekazać go za pomocą indeksu tablicy

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

Przykład:

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

param1[0][name] test_name

param1[0][value] test_value

17

Jeśli chcesz mieć tablicę dykt, spróbuj tego: wprowadź opis zdjęcia tutaj


2
Dla mnie tym, co zadziałało dla node.js / mongoose, jest social_links[0].namezauważenie dodatkowego okresu
— Songtham T.

W twoim przykładzie co jeśli namejest również tablicą? Próbowałem czegoś takiego jak social_links[0]name[0]w Django REST Framework (zagnieżdżony zapisywalny model-serializator z relacjami wiele do wielu) i to nie zadziałało.
— Nathan

11

to działało dla mnie. przekazać tablicę obiektu Item {ItemID, ColorID, SizeID, Quntity}

Dane listonosza


10

Ważne jest, aby wiedzieć, że pole WARTOŚĆ może zawierać tylko wartość liczbową (bez specyfikatorów).

Jeśli chcesz wysłać np. Tablicę „wiadomości” za pomocą Listonosza, z których każda zawiera listę par klucz / wartość, wpisz np. Wiadomości [] [przyczyna] w polu KLUCZ, a wartość przyczyny w polu WARTOŚĆ:

wprowadź opis zdjęcia tutaj

Serwer otrzyma:

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

To załatwiło sprawę ... ale tylko wtedy, gdy sprawdziłem opcję danych formularza.
— Nowdeen

8

w zestawie nagłówków

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

W ciele wybierz opcję

x-www-form-urlencoded

i wstaw dane jako tablicę json

user_ids : ["1234", "5678"]

Tylko jeden działał dla mnie przy użyciu danych formularza! Nie można użyć raw, ponieważ wysyłam też zdjęcia
— Matt Wills

Tylko dla mnie działał Dla kompletnych nowicjuszy: Naciśnij x-www-form-urlencoded => edycja zbiorcza => Nazwy użytkowników: [„Nazwa użytkownika1”, „Nazwa użytkownika2”, „Nazwa użytkownika3”]
— Denys Moroz

7

Działa to również w przypadku list w obiekcie:

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

odpowiednikiem JSON byłoby:

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

6

Przejdź do nagłówka i wybierz Content-Type= application/jsonnastępnie przejdź do treści i wybierz, rawa następnie przekaż tablicę.wprowadź opis zdjęcia tutaj


5

Wybierz dane formularza lub kod url i użyj tego samego klucza „user_ids”. Serwer powinien otrzymać go jako tablicę.


Wygląda na to, że z powodu błędu w Chrome, który błędnie wysyła z nagłówkiem XML, nawet jeśli wybierzesz JSON w Postman, musisz dodać Content-typenagłówek z wartością application/json.
— Jason Swett

5
na wypadek, gdyby ktoś wrócił i szukał odpowiedzi, kluczem do tablicy powinien być user_ids [] zamiast po prostu user_ids
— anguyen

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

Możesz przejść tak. Mam nadzieję, że to komuś pomoże.



0

Wypróbowałem wszystkie rozwiązania tutaj i na innych postach, ale nic nie pomogło.

Jedyna odpowiedź pomogła mi:
dodanie atrybutu [FromBody] przed dekleracją parametru w sygnaturze funkcji:

[Route("MyFunc")]        
public string MyFunc([FromBody] string[] obj)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.