HTTP में POST और PUT के बीच अंतर को समझना

Node.js

HTTP विधियों का परिचय

रेस्टफुल वेब सेवाओं के साथ काम करते समय, HTTP विधियों, विशेष रूप से POST और PUT के बीच अंतर को समझना महत्वपूर्ण है। इन विधियों का उपयोग अक्सर संसाधनों को बनाने और अद्यतन करने के लिए किया जाता है, लेकिन वे अलग-अलग तरीकों से काम करते हैं। उनके अद्वितीय उद्देश्यों और उचित अनुप्रयोगों को समझने से यह सुनिश्चित करने में मदद मिल सकती है कि आपका एपीआई डिज़ाइन कुशल और सहज दोनों है।

POST का उपयोग आम तौर पर नए संसाधन बनाने के लिए किया जाता है, जबकि PUT का उपयोग किसी विशिष्ट URI पर संसाधन बनाने या बदलने के लिए किया जाता है। यह अंतर, सूक्ष्म होते हुए भी, वेब सेवा परिवेश में संसाधनों को कैसे प्रबंधित और इंटरैक्ट किया जाता है, इसके लिए महत्वपूर्ण निहितार्थ हैं।

आज्ञा विवरण
express() एक्सप्रेस एप्लिकेशन को प्रारंभ करता है।
app.use(express.json()) आने वाले JSON अनुरोधों को पार्स करने के लिए मिडलवेयर।
app.post() संसाधन निर्माण को संभालने के लिए एक POST मार्ग को परिभाषित करता है।
app.put() संसाधनों को अद्यतन करने या बदलने के लिए PUT मार्ग को परिभाषित करता है।
req.body अनुरोध निकाय में भेजे गए JSON डेटा तक पहुँचता है।
res.status().send() HTTP स्टेटस कोड सेट करता है और क्लाइंट को प्रतिक्रिया भेजता है।
fetch() फ्रंटएंड से HTTP अनुरोध निष्पादित करता है।
method: 'POST' फ़ेच अनुरोध में उपयोग करने के लिए HTTP विधि निर्दिष्ट करता है।
headers: { 'Content-Type': 'application/json' } JSON सामग्री को इंगित करने के लिए अनुरोध शीर्षलेख सेट करता है।
body: JSON.stringify(data) अनुरोध निकाय के लिए जावास्क्रिप्ट ऑब्जेक्ट डेटा को JSON स्ट्रिंग में परिवर्तित करता है।

POST और PUT स्क्रिप्ट की कार्यक्षमता को समझना

Node.js और Express का उपयोग करने वाली बैकएंड स्क्रिप्ट दर्शाती है कि HTTP विधियों को कैसे संभालना है और संसाधन प्रबंधन के लिए. फ़ंक्शन एक्सप्रेस एप्लिकेशन को प्रारंभ करता है, जबकि app.use(express.json()) मिडलवेयर का उपयोग आने वाले JSON अनुरोधों को पार्स करने के लिए किया जाता है। विधि संसाधन बनाने के लिए एक मार्ग को परिभाषित करती है, जहां से संसाधन डेटा निकाला जाता है और सर्वर-साइड ऑब्जेक्ट में संग्रहीत किया जाता है। प्रतिक्रिया क्लाइंट को 201 स्थिति कोड के साथ वापस भेजी जाती है जो दर्शाती है कि संसाधन सफलतापूर्वक बनाया गया था।

विधि किसी मौजूदा संसाधन को अद्यतन करने या बदलने के लिए एक मार्ग को परिभाषित करती है। यह विधि संसाधन आईडी का उपयोग करती है और से डेटा सर्वर-साइड ऑब्जेक्ट को अद्यतन करने के लिए। प्रतिक्रिया को 200 स्टेटस कोड के साथ वापस भेजा जाता है, जो दर्शाता है कि संसाधन सफलतापूर्वक अपडेट किया गया था। इन HTTP अनुरोधों को निष्पादित करने के लिए फ्रंटएंड स्क्रिप्ट Fetch API का उपयोग करती है। fetch() फ़ंक्शन का उपयोग उचित विधियों के साथ किया जाता है ( और ) और बैकएंड के साथ इंटरैक्ट करने के लिए हेडर, यह सुनिश्चित करते हुए कि क्लाइंट की ओर से संसाधन सही ढंग से बनाए और अपडेट किए गए हैं।

Node.js और Express का उपयोग करके बैकएंड स्क्रिप्ट

यह स्क्रिप्ट दर्शाती है कि Node.js और Express बैकएंड में POST और PUT विधियों का उपयोग कैसे करें

const express = require('express');
const app = express();
app.use(express.json());

let resources = {};

app.post('/resource', (req, res) => {
  const id = generateId();
  resources[id] = req.body;
  res.status(201).send({ id, ...req.body });
});

app.put('/resource/:id', (req, res) => {
  const id = req.params.id;
  resources[id] = req.body;
  res.status(200).send({ id, ...req.body });
});

function generateId() {
  return Math.random().toString(36).substr(2, 9);
}

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

जावास्क्रिप्ट और फ़ेच एपीआई का उपयोग करते हुए फ्रंटएंड स्क्रिप्ट

यह स्क्रिप्ट दर्शाती है कि जावास्क्रिप्ट और फ़ेच एपीआई का उपयोग करके फ्रंटएंड एप्लिकेशन से POST और PUT अनुरोध कैसे करें

const createResource = async (data) => {
  const response = await fetch('http://localhost:3000/resource', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(data)
  });
  return response.json();
};

const updateResource = async (id, data) => {
  const response = await fetch(`http://localhost:3000/resource/${id}`, {
    method: 'PUT',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(data)
  });
  return response.json();
};

// Example usage
createResource({ name: 'New Resource' }).then(data => console.log(data));
updateResource('existing-id', { name: 'Updated Resource' }).then(data => console.log(data));

रेस्टफुल एपीआई में संसाधन निर्माण की खोज

RESTful API डिज़ाइन करते समय, इनमें से किसी एक को चुनें और संसाधन निर्माण की विधियाँ उपयोग के मामले और वांछित व्यवहार पर निर्भर करती हैं। किसी निर्दिष्ट संसाधन के अंतर्गत एक नया अधीनस्थ संसाधन बनाने के लिए विधि का उपयोग किया जाता है। यह गैर-निष्क्रिय है, जिसका अर्थ है कि कई समान POST अनुरोधों के परिणामस्वरूप कई संसाधन बनाए जाएंगे। जब सर्वर नए संसाधन का यूआरआई निर्धारित करता है तो यह विधि आदर्श होती है।

दूसरी ओर, विधि किसी विशिष्ट यूआरआई पर संसाधन बना या प्रतिस्थापित कर सकती है। यह निष्क्रिय है, जिसका अर्थ है कि कई समान PUT अनुरोध एकल अनुरोध के समान परिणाम देंगे। यह विधि उन परिदृश्यों के लिए उपयुक्त है जहां क्लाइंट बनाए जाने या अद्यतन किए जाने वाले संसाधन का यूआरआई निर्दिष्ट करता है। इन अंतरों को समझने से एपीआई को डिजाइन करने में मदद मिलती है जो अपेक्षित व्यवहार और आवश्यकताओं के अनुरूप होती है।

  1. POST पद्धति का प्राथमिक उपयोग क्या है?
  2. विधि का उपयोग मुख्य रूप से एक निर्दिष्ट संसाधन के अधीनस्थ के रूप में एक नया संसाधन बनाने के लिए किया जाता है।
  3. PUT पद्धति का प्राथमिक उपयोग क्या है?
  4. किसी विशिष्ट यूआरआई पर संसाधन बनाने या बदलने के लिए विधि का उपयोग किया जाता है।
  5. क्या POST निरर्थक है?
  6. नहीं, विधि निष्क्रिय नहीं है, जिसका अर्थ है कि एकाधिक समान POST अनुरोध एकाधिक संसाधन बनाएंगे।
  7. क्या PUT निष्क्रिय है?
  8. हां विधि निष्क्रिय है, जिसका अर्थ है कि एकाधिक समान PUT अनुरोध एकल अनुरोध के समान परिणाम उत्पन्न करेंगे।
  9. आपको PUT के स्थान पर POST का उपयोग कब करना चाहिए?
  10. उपयोग जब सर्वर नए संसाधन का यूआरआई निर्धारित करता है, और क्लाइंट को इसे निर्दिष्ट करने की आवश्यकता नहीं होती है।
  11. आपको POST के स्थान पर PUT का उपयोग कब करना चाहिए?
  12. उपयोग जब क्लाइंट बनाए या अपडेट किए जाने वाले संसाधन का यूआरआई निर्दिष्ट करता है।
  13. क्या PUT का उपयोग किसी संसाधन को अद्यतन करने के लिए किया जा सकता है?
  14. हां यदि निर्दिष्ट यूआरआई किसी मौजूदा संसाधन को संदर्भित करता है तो विधि मौजूदा संसाधन को अद्यतन कर सकती है।
  15. क्या POST का उपयोग किसी संसाधन को अद्यतन करने के लिए किया जा सकता है?
  16. जबकि किसी संसाधन को तकनीकी रूप से अद्यतन कर सकता है, इसका उपयोग आम तौर पर नए संसाधन बनाने के लिए किया जाता है।
  17. यदि PUT अनुरोध में URI मौजूद नहीं है तो क्या होगा?
  18. यदि यूआरआई मौजूद नहीं है, तो विधि उस यूआरआई पर एक नया संसाधन बना सकती है।
  19. एक सफल POST अनुरोध के लिए प्रतिक्रिया स्थिति कोड क्या है?
  20. एक सफल अनुरोध आमतौर पर 201 निर्मित स्थिति कोड लौटाता है।

HTTP में पोस्ट और पुट के लिए मुख्य बातें

कुशल और प्रभावी RESTful API के निर्माण के लिए संसाधन निर्माण के लिए उपयुक्त HTTP विधि का चयन करना आवश्यक है। यह विधि नए संसाधन बनाने के लिए सबसे उपयुक्त है जहां सर्वर संसाधन का यूआरआई निर्धारित करता है। यह गैर-निष्क्रिय है, जिसका अर्थ है कि कई अनुरोधों से कई संसाधन निर्माण हो सकते हैं। इसके विपरीत, विधि तब आदर्श होती है जब ग्राहक संसाधन के लिए यूआरआई निर्दिष्ट करता है, और इसका उपयोग संसाधनों को बनाने या अद्यतन करने के लिए किया जा सकता है। यह निरर्थक है, बार-बार अनुरोध करने पर भी लगातार परिणाम सुनिश्चित करता है।

इन बारीकियों को समझने से डेवलपर्स को एपीआई डिज़ाइन करने में मदद मिलती है जो अपेक्षित व्यवहार और आवश्यकताओं के अनुरूप होती है। दिए गए उदाहरण दर्शाते हैं कि Node.js और Express का उपयोग करके बैकएंड सिस्टम में इन तरीकों को कैसे लागू किया जाए, यह सुनिश्चित करते हुए कि संसाधनों को सर्वर और क्लाइंट दोनों पक्षों से प्रभावी ढंग से प्रबंधित किया जाता है।

निष्कर्ष में, POST और PUT दोनों विधियों की RESTful API के भीतर संसाधन निर्माण और प्रबंधन में अलग-अलग भूमिकाएँ हैं। POST URI निर्दिष्ट किए बिना नए संसाधन बनाने के लिए आदर्श है, जबकि PUT किसी निर्दिष्ट URI पर संसाधन बनाने या अद्यतन करने के लिए बेहतर है। इन विधियों को समझकर और उचित रूप से उपयोग करके, डेवलपर्स ऐसे एपीआई डिज़ाइन कर सकते हैं जो मजबूत, विश्वसनीय और रेस्टफुल आर्किटेक्चर के सिद्धांतों के साथ संरेखित हों।