เป็นไปได้ไหมที่จะส่งอาเรย์ด้วยส่วนขยายบุรุษไปรษณีย์ Chrome?


246

ฉันใช้ส่วนขยายบุรุษไปรษณีย์ Chrome เพื่อทดสอบ API ของฉันและต้องการส่งรหัสประจำอาร์เรย์ผ่านทางโพสต์ มีวิธีการส่งรายการสิ่งนี้เป็นพารามิเตอร์ในบุรุษไปรษณีย์หรือไม่

{
  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คุณจะต้องใช้วิธีที่อธิบายไว้ข้างต้นเพราะการส่งข้อมูลเป็น raw (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
ไม่มีใครทำงานได้ แต่ฉันคิดออกเพียงแค่เพิ่มชื่อ array ทำงานในปี 2019 [ prntscr.com/nqubpi]
Shreyan Mehta

71

สำหรับฉันไม่ได้ทำงานกับอาร์เรย์ [0], อาร์เรย์1 , .. หรืออาร์เรย์ [], อาร์เรย์ [], ... มันทำงานได้ง่ายขึ้น: ป้อนคำอธิบายรูปภาพที่นี่


8
โดยการเพิ่มหลายคีย์ด้วยชื่อเดียวกันเซิร์ฟเวอร์จะได้รับเพียง
คีย์

กรุณาบอกฉันว่าจะส่งเพียงหนึ่งองค์ประกอบ userid [0] ในรูปแบบข้อมูล ถ้าฉันผ่านหมายเลขผู้ใช้ [] / หมายเลขผู้ใช้ [0] ในเขตข้อมูลที่สำคัญมันจะเป็นสตริง!
Johncy

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": {"ชนิด": "จุด", "พิกัด": [126.972967, 37.54171],} เพื่อพิมพ์ใน loc [ชนิด]: จุดตำแหน่ง [พิกัด] []: 126 .. ., loc [พิกัด] []: 37 ... บน Postman ขอบคุณ !!
JillAndMe

สิ่งนี้มีประโยชน์มากเมื่อคุณต้องการส่งไฟล์รูปแบบ 'ดิบ' ของบุรุษไปรษณีย์เพียงแค่ไม่ทำงาน คุณต้องใช้รูปแบบข้อมูลแบบฟอร์ม
ปลุก

32

ฉันยังมีปัญหานั้นและแก้ไขได้ด้วยการทำสิ่งต่อไปนี้:

1 - ไปที่การกำหนดค่าส่วนหัวคำขอและเพิ่มรายการต่อไปนี้:

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

2 - ในการส่งอาร์เรย์ json ฉันไปที่รูปแบบ raw json และตั้งค่า user_ids เป็น array:

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

นี่เป็นการหลอกลวงสำหรับฉันการตั้งค่าส่วนหัวยอมรับไม่จำเป็นอย่างไรก็ตาม
janv8000

นี่คือคำตอบที่ฉันต้องการ
Phillip Brandon Holmes

วิธี API ของฉันคาดหวังว่ารายการ <string> และนี่ทำงานได้ดี
ศรัทธาชนะ

20

ตั้งค่า Body เป็น raw และจัดรูปแบบดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่


{"คำถาม": "เมืองหลวงของอินเดียคืออะไร", "คะแนน": 1, "ตัวเลือก": ["มุมไบ", "ปูเน่", "นิวเดลี", "ชัยปุระ"], "ถูกต้อง": "นิวเดลี" }
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 / พังพอนจะsocial_links[0].nameสังเกตเห็นช่วงเวลา
Songtham T.

ในตัวอย่างของคุณจะเป็นเช่นไรถ้าnameเป็นอาเรย์ด้วย? ฉันลองทำอะไรบางอย่างsocial_links[0]name[0]ใน Django REST Framework (ซ้อนกันแบบเขียนได้อนุกรม serializer กับหลายต่อหลายความสัมพันธ์) และมันไม่ทำงาน
นาธาน

11

สิ่งนี้ใช้ได้สำหรับฉัน การผ่านอาร์เรย์ของ Item item {ItemID, ColorID, SizeID, Quntity}

ข้อมูลบุรุษไปรษณีย์


10

สิ่งสำคัญคือต้องรู้ว่ากล่อง VALUE ได้รับอนุญาตให้มีค่าตัวเลขเท่านั้น (ไม่มีตัวระบุ)

หากคุณต้องการส่งเช่นอาร์เรย์ของ "ข้อความ" กับบุรุษไปรษณีย์แต่ละคนมีรายการคู่คีย์ / ค่าให้ป้อนข้อความเช่น [] [เหตุผล] ลงในกล่อง KEY และมูลค่าของเหตุผลลงในช่องค่า:

ป้อนคำอธิบายรูปภาพที่นี่

เซิร์ฟเวอร์จะได้รับ:

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

นี่เป็นการหลอกลวง ... แต่เมื่อฉันตรวจสอบตัวเลือกข้อมูลฟอร์ม
Nowdeen

8

ในชุดส่วนหัว

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

ในตัวเลือกตัวเลือก

x-www- ฟอร์ม urlencoded

และแทรกข้อมูลเป็นอาร์เรย์ json

user_ids : ["1234", "5678"]

มีเพียงอันเดียวที่ทำงานกับฉันโดยใช้ข้อมูลแบบฟอร์ม! ไม่สามารถใช้ข้อมูลดิบได้เนื่องจากฉันกำลังส่งภาพด้วยเช่นกัน
Matt Wills

หนึ่งเดียวที่ทำงานสำหรับฉันเช่นกันสำหรับมือใหม่ที่สมบูรณ์: กด x-www-form-urlencoded => การแก้ไขเป็นกลุ่ม => ชื่อผู้ใช้: ["ชื่อผู้ใช้ 1", "ชื่อผู้ใช้ 2", "ชื่อผู้ใช้ 3"]
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

เลือกแบบฟอร์มข้อมูลหรือ urlencoded และใช้คีย์เดียวกัน "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] ก่อนที่จะ decleration ของพารามิเตอร์ในฟังก์ชั่นลายเซ็น:

[Route("MyFunc")]        
public string MyFunc([FromBody] string[] obj)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.