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.