ฉันใช้ส่วนขยายบุรุษไปรษณีย์ Chrome เพื่อทดสอบ API ของฉันและต้องการส่งรหัสประจำอาร์เรย์ผ่านทางโพสต์ มีวิธีการส่งรายการสิ่งนี้เป็นพารามิเตอร์ในบุรุษไปรษณีย์หรือไม่
{
user_ids: ["1234", "5678"]
}
ฉันใช้ส่วนขยายบุรุษไปรษณีย์ Chrome เพื่อทดสอบ API ของฉันและต้องการส่งรหัสประจำอาร์เรย์ผ่านทางโพสต์ มีวิธีการส่งรายการสิ่งนี้เป็นพารามิเตอร์ในบุรุษไปรษณีย์หรือไม่
{
user_ids: ["1234", "5678"]
}
คำตอบ:
คุณต้องเติมชื่อตัวแปรด้วย[]
เช่นนี้:
หากวิธีนี้ใช้ไม่ได้ผลอย่าพยายามใส่ดัชนีในวงเล็บ:
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
)
my_array[hashname] value1
my_array[] value
จะสร้างพารามิเตอร์อาร์เรย์พร้อมกับค่าที่ให้ไว้เป็นkey => [value
] จะสร้างกัญชาเป็นmy_array[key] value
{key => value}
สำหรับฉันไม่ได้ทำงานกับอาร์เรย์ [0], อาร์เรย์1 , .. หรืออาร์เรย์ [], อาร์เรย์ [], ... มันทำงานได้ง่ายขึ้น:
นี่คือทางออกของฉัน:
ใช้แบบฟอร์มข้อมูลและแก้ไขดังต่อไปนี้:
Key Value
box[] a
box[n1] b
box[n2][] c
box[n2][] d
และคุณจะได้อาร์เรย์ดังนี้
{"box":{"0":"a","n1":"b","n2":["c","d"]}}
ฉันยังมีปัญหานั้นและแก้ไขได้ด้วยการทำสิ่งต่อไปนี้:
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"]
ตามที่กล่าวถึงโดย @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
social_links[0].name
สังเกตเห็นช่วงเวลา
name
เป็นอาเรย์ด้วย? ฉันลองทำอะไรบางอย่างsocial_links[0]name[0]
ใน Django REST Framework (ซ้อนกันแบบเขียนได้อนุกรม serializer กับหลายต่อหลายความสัมพันธ์) และมันไม่ทำงาน
สิ่งสำคัญคือต้องรู้ว่ากล่อง VALUE ได้รับอนุญาตให้มีค่าตัวเลขเท่านั้น (ไม่มีตัวระบุ)
หากคุณต้องการส่งเช่นอาร์เรย์ของ "ข้อความ" กับบุรุษไปรษณีย์แต่ละคนมีรายการคู่คีย์ / ค่าให้ป้อนข้อความเช่น [] [เหตุผล] ลงในกล่อง KEY และมูลค่าของเหตุผลลงในช่องค่า:
เซิร์ฟเวอร์จะได้รับ:
{"messages"=>[{"reason"=>"scrolled", "tabid"=>"2"}, {"reason"=>"reload", "tabid"=>"1"}], "endpoint"=>{}}
ในชุดส่วนหัว
content-type : application/x-www-form-urlencoded
ในตัวเลือกตัวเลือก
x-www- ฟอร์ม urlencoded
และแทรกข้อมูลเป็นอาร์เรย์ json
user_ids : ["1234", "5678"]
สิ่งนี้ใช้ได้กับรายการภายในวัตถุด้วย:
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"
}
]
}
เลือกแบบฟอร์มข้อมูลหรือ urlencoded และใช้คีย์เดียวกัน "user_ids" เซิร์ฟเวอร์ควรได้รับมันเป็นอาร์เรย์
Content-type
application/json
{
"data" : [
{
"key1" : "value1",
"key2" : "value2"
},
{
"key01" : "value01",
"key02" : "value02"
},
{
"key10" : "value10",
"key20" : "value20"
}
]
}
คุณสามารถผ่านสิ่งนี้ได้ หวังว่านี่จะช่วยใครซักคน
ในรูปแบบข้อมูล
key value
user_ids[] 1234
user_ids[] 5678
ฉันลองวิธีแก้ปัญหาทั้งหมดที่นี่และในโพสต์อื่น ๆ แต่ไม่มีอะไรช่วย
คำตอบเดียวที่ช่วยฉัน: การ
เพิ่มคุณสมบัติ [FromBody] ก่อนที่จะ decleration ของพารามิเตอร์ในฟังก์ชั่นลายเซ็น:
[Route("MyFunc")]
public string MyFunc([FromBody] string[] obj)