आपकी भाषा, "यह बहुत ही बेकार लगता है ...", मेरे लिए समय से पहले अनुकूलन के प्रयास को इंगित करता है। जब तक यह नहीं दिखाया जा सकता है कि वस्तुओं के पूरे प्रतिनिधित्व को भेजना एक प्रमुख प्रदर्शन हिट है (हम उपयोगकर्ताओं को अस्वीकार कर रहे हैं> 150ms के रूप में) तो एक नया गैर-मानक एपीआई व्यवहार बनाने का प्रयास करने का कोई मतलब नहीं है। याद रखें, एपीआई का उपयोग करने में जितना आसान है उतना ही सरल है।
डिलीट के लिए निम्नलिखित भेजें क्योंकि सर्वर को हटाने से पहले ऑब्जेक्ट की स्थिति के बारे में कुछ भी जानने की आवश्यकता नहीं है।
DELETE /emails
POSTDATA: [{id:1},{id:2}]
अगला विचार यह है कि यदि कोई एप्लिकेशन ऑब्जेक्ट के बल्क अपडेट के संबंध में प्रदर्शन के मुद्दों में चल रहा है, तो प्रत्येक ऑब्जेक्ट को कई ऑब्जेक्ट में तोड़ने पर विचार किया जाना चाहिए। इस तरह JSON पेलोड आकार का एक अंश है।
एक उदाहरण के रूप में जब दो अलग-अलग ईमेल के "रीड" और "संग्रहीत" स्टेटस को अपडेट करने के लिए एक प्रतिक्रिया भेजते हैं, तो आपको निम्नलिखित भेजने होंगे:
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 में परिवर्तन के एक सरणी प्रदान करके लागू किया जाना चाहिए: कार्रवाई (CRUD), पथ (URL), और मूल्य परिवर्तन। इसे एक मानक कार्यान्वयन माना जा सकता है लेकिन यदि आप REST API की संपूर्णता को देखते हैं तो यह एक गैर-सहज ज्ञान युक्त एकल-बंद है। इसके अलावा, उपरोक्त कार्यान्वयन GitHub ने PATCH को कैसे लागू किया है ।
इसे योग करने के लिए, बैच क्रियाओं के साथ Restful सिद्धांतों का पालन करना संभव है और अभी भी स्वीकार्य प्रदर्शन है।