É possível enviar uma matriz com a extensão Postman Chrome?


246

Estou usando a extensão Postman Chrome para testar minha API e gostaria de enviar uma matriz de IDs via postagem. Existe uma maneira de enviar algo listar isso como um parâmetro no Postman?

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

1
Estou bastante certo de que a maneira correta de enviar uma matriz é "de alguma maneira que o servidor específico para o qual você está enviando a receba corretamente". Isso explica a variação nas respostas abaixo - mas tudo seria um pouco mais útil se todos (ou alguém?) Dissessem qual back-end estavam usando.
mwardm

Respostas:


438

Você precisa sufocar seu nome de variável da []seguinte maneira:

send_array_param_with_postman

Se isso não funcionar, tente não colocar índices entre colchetes:

my_array[]  value1
my_array[]  value2

Nota:

  • Se você estiver usando o aplicativo empacotado pelo carteiro , poderá enviar uma matriz selecionando raw/ json(em vez de form-data). Além disso, certifique-se de definir Content-Typecomo application/jsonna Headersguia. Aqui está um exemplo para dados brutos {"user_ids": ["123" "233"]}, não esqueça as aspas!

  • Se você estiver usando o cliente REST do carteiro, precisará usar o método descrito acima, porque passar dados como brutos (json) não funcionará. Há um erro no cliente REST do carteiro (pelo menos eu recebo o erro quando uso 0.8.4.6).


3
Apenas no caso de alguém está perguntando como adicionar hashes em vez de apenas array, a idéia ainda é o mesmo, apenas mude os índices de nome de hashmy_array[hashname] value1
Bryan P

5
my_array[] valuecriará um parâmetro de matriz com os valores fornecidos, como key => [value]. my_array[key] valuecriará um hash, como {key => value}.
MARC.RS 14/08/2015

1
nenhum deles funcionou, mas eu descobri apenas adicionando as obras nome da matriz em 2019. [ prntscr.com/nqubpi]
Shreyan Mehta

71

Para mim não funcionou com array [0], array 1 , .. ou array [], array [], .... Funciona de maneira mais simples: insira a descrição da imagem aqui


8
Ao adicionar várias chaves com o mesmo nome, o servidor receberá apenas a última
evilReiko 10/09

por favor me diga como enviar apenas um elemento userid [0] em form-data. se eu passar userid [] / userid [0] em um campo-chave, ele será usado como uma string!
Johncy

1
com o asp.net core 2.2, ele recebe todos os elementos da matriz com esta solução
ahong

no Django, consegui obter todos os arquivos com: request.FILES.getlist ('usersId'), usando este método
Swasidhant

44

Aqui está a minha solução:

use dados do formulário e edite como abaixo:

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

e você obterá uma matriz como esta:

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

Ótimo! finalmente, posso enviar um objeto "loc": {"type": "Point", "coordenates": [126.972967, 37.54171],} para digitar loc [type]: Point, loc [coordenadas] []: 126 .. ., loc [coordenadas] []: 37 ... no Postman thx !!
JillAndMe 28/09

Isso é muito útil, pois quando você precisa enviar arquivos, o formato 'bruto' do Postman simplesmente não funciona. Você precisa usar o formato de dados do formulário.
arunt 18/06

32

Eu também tive esse problema e o resolvi fazendo o seguinte:

1 - Acesse a configuração do cabeçalho da solicitação e adicione o seguinte:

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

2 - Para enviar o array json, fui para o formato raw json e configurei o user_ids como array:

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

Isso fez o truque para mim, mas não foi necessário definir o cabeçalho Accept
janv8000

Essa era a resposta que eu precisava.
Phillip Brandon Holmes

Meu método de API espera List <string> e isso fez o trabalho.
Faith Vence

20

Defina Corpo como bruto e forme a matriz da seguinte maneira:

insira a descrição da imagem aqui


{"question": "O que é a capital da Índia", "marks": 1, "options": ["Mumbai", "Pune", "New Delhi", "Jaipur"], "correto": "New Delhi" }
Prathamesh Mais 12/03

17

Como mencionado por @pinouchon, você pode transmiti-lo com a ajuda do índice da matriz

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

Exemplo:

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

param1[0][name] test_name

param1[0][value] test_value

17

Se você deseja uma matriz de dictos, tente o seguinte: insira a descrição da imagem aqui


2
Para mim o que funcionou para node.js / mangusto é social_links[0].nameaviso do adicional período
Songtham T.

No seu exemplo, o que se nametambém é uma matriz? Tentei algo como social_links[0]name[0]no Django REST Framework (serializador de modelo gravável aninhado com relações muitos-para-muitos) e não funcionou.
Nathan

11

isso funcionou para mim. para passar uma matriz do objeto Item {ItemID, ColorID, SizeID, Quntity}

Dados do carteiro


10

É importante saber que a caixa VALUE só pode conter um valor numérico (sem especificadores).

Se você deseja enviar, por exemplo, uma matriz de "mensagens" com o Postman, cada uma com uma lista de pares de chave / valor, insira, por exemplo, mensagens [] [razão] na caixa CHAVE e o valor da razão na caixa VALUE:

insira a descrição da imagem aqui

O servidor receberá:

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

Isso fez o truque ... mas somente quando marquei a opção de dados do formulário.
Nowdeen 16/06/19

8

no conjunto de cabeçalhos

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

Opção de seleção no corpo

x-www-form-urlencoded

e insira dados como array json

user_ids : ["1234", "5678"]

Apenas um que trabalhou para mim usando os dados do formulário! Não foi possível usar o raw, pois estou enviando imagens também
Matt Wills

O único funcionou para mim, bem como para iniciantes completos: Imprensa www-form-urlencoded-X => edição em massa => nomes de usuário: [ "UserName1", "UserName2", "USERNAME3"]
Denys Moroz

7

Isso também funciona para listas dentro do objeto:

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

o JSON equivalente seria:

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

6

Vá para Cabeçalho e selecione Content-Type= application/json, vá para o corpo e selecione rawe passe uma matriz.insira a descrição da imagem aqui


5

Escolha dados do formulário ou codificados por URL e use a mesma chave "user_ids". O servidor deve recebê-lo como uma matriz.


Parece que, devido a um erro no Chrome que é enviado erroneamente com um cabeçalho XML, mesmo quando você seleciona JSON no Postman, é necessário adicionar um Content-typecabeçalho com valor application/json.
21813 Jason Swett

5
apenas no caso de alguém volta à procura de uma resposta, a chave para uma série deve ser user_ids [] em vez de apenas user_ids
anguyen

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

Você pode passar assim. Espero que isso ajude alguém.



0

Tentei todas as soluções aqui e em outros posts, mas nada ajudou.

A única resposta me ajudou:
Adicionando o atributo [FromBody] antes da decleração do parâmetro na assinatura da função:

[Route("MyFunc")]        
public string MyFunc([FromBody] string[] obj)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.