ภาษาของคุณ " ดูเหมือนว่าสิ้นเปลืองมาก ... " สำหรับฉันแสดงว่ามีความพยายามในการเพิ่มประสิทธิภาพก่อนวัยอันควร หากไม่สามารถแสดงให้เห็นได้ว่าการส่งการแสดงวัตถุทั้งหมดนั้นเป็นผลการดำเนินงานที่สำคัญ (เรากำลังพูดถึงผู้ใช้ที่ยอมรับไม่ได้> 150ms) ดังนั้นจึงไม่มีประเด็นในการพยายามสร้างพฤติกรรม API ที่ไม่ได้มาตรฐานใหม่ โปรดจำไว้ว่า API ที่ใช้ง่ายกว่าก็จะง่ายกว่า
สำหรับการลบส่งต่อไปนี้เป็นเซิร์ฟเวอร์ไม่จำเป็นต้องรู้อะไรเกี่ยวกับสถานะของวัตถุก่อนที่จะลบเกิดขึ้น
DELETE /emails
POSTDATA: [{id:1},{id:2}]
ความคิดต่อไปคือหากมีการใช้งานแอปพลิเคชันในเรื่องประสิทธิภาพการทำงานเกี่ยวกับการอัปเดตวัตถุจำนวนมากดังนั้นควรพิจารณาให้การแยกวัตถุแต่ละรายการออกเป็นหลาย ๆ วัตถุ ด้วยวิธีนี้ JSON payload มีขนาดของเศษส่วน
ตัวอย่างเมื่อส่งคำตอบเพื่ออัปเดตสถานะ "อ่าน" และ "เก็บถาวร" ของอีเมลสองฉบับแยกกันคุณจะต้องส่งข้อความต่อไปนี้:
PUT /emails
POSTDATA: [
{
id:1,
to:"someone@bratwurst.com",
from:"someguy@frommyville.com",
subject:"Try this recipe!",
text:"1LB Pork Sausage, 1 Onion, 1T Black Pepper, 1t Salt, 1t Mustard Powder",
read:true,
archived:true,
importance:2,
labels:["Someone","Mustard"]
},
{
id:2,
to:"someone@bratwurst.com",
from:"someguy@frommyville.com",
subject:"Try this recipe (With Fix)",
text:"1LB Pork Sausage, 1 Onion, 1T Black Pepper, 1t Salt, 1T Mustard Powder, 1t Garlic Powder",
read:true,
archived:false,
importance:1,
labels:["Someone","Mustard"]
}
]
ฉันจะแยกองค์ประกอบที่ไม่แน่นอนของอีเมล (อ่าน, เก็บถาวร, สำคัญ, ป้ายกำกับ) เป็นวัตถุที่แยกต่างหากเช่นเดียวกับคนอื่น ๆ (ถึง, จาก, หัวเรื่อง, ข้อความ) จะไม่มีการอัปเดต
PUT /email-statuses
POSTDATA: [
{id:15,read:true,archived:true,importance:2,labels:["Someone","Mustard"]},
{id:27,read:true,archived:false,importance:1,labels:["Someone","Mustard"]}
]
วิธีการอีกวิธีหนึ่งคือใช้ประโยชน์จากการใช้ PATCH หากต้องการระบุคุณสมบัติที่คุณต้องการอัปเดตอย่างชัดเจนและควรละเว้นคุณสมบัติอื่นทั้งหมด
PATCH /emails
POSTDATA: [
{
id:1,
read:true,
archived:true
},
{
id:2,
read:true,
archived:false
}
]
ผู้คนระบุว่าควรนำ PATCH มาใช้โดยระบุการเปลี่ยนแปลงที่มี: action (CRUD), path (URL) และการเปลี่ยนแปลงค่า สิ่งนี้อาจถูกพิจารณาว่าเป็นการใช้งานแบบมาตรฐาน แต่ถ้าคุณดู REST API ทั้งหมดมันเป็นการใช้งานที่ไม่ยุ่งยาก นอกจากนี้การดำเนินการดังกล่าวข้างต้นเป็นวิธีการที่GitHub ได้ดำเนินการ PATCH
โดยสรุปแล้วเป็นไปได้ที่จะปฏิบัติตามหลักการ RESTful ด้วยการกระทำแบบแบตช์และยังคงมีประสิทธิภาพที่ยอมรับได้