जब भी एक Express एप्लिकेशन सर्वर HTTP रिक्वेस्ट प्राप्त करता है, यह डेवलपर को एक ऑब्जेक्ट प्रदान करता है, जिसे आमतौर पर res कहा जाता है।
उदाहरण
app.get('/test', (req, res) => {
// यहां req और res उपयोग करें
})
res ऑब्जेक्ट मूल रूप से उस रिस्पांस को संदर्भित करता है जो इस API कॉल के हिस्से के रूप में भेजा जाएगा।
res.send फंक्शन कंटेंट टाइप को text/html सेट करता है जिसका अर्थ है कि क्लाइंट अब इसे टेक्स्ट के रूप में ट्रीट करेगा। फिर यह रिस्पांस को क्लाइंट को लौटाता है।
res.json फंक्शन दूसरी ओर content-type हेडर को application/json सेट करता है ताकि क्लाइंट रिस्पांस स्ट्रिंग को एक वैध JSON ऑब्जेक्ट के रूप में ट्रीट करे। यह भी फिर रिस्पांस को क्लाइंट को लौटाता है।
विस्तृत तुलना
| पहलू | res.send() | res.json() |
|---|---|---|
| Content-Type | ऑटो-डिटेक्ट (आमतौर पर text/html) | application/json (एक्सप्लिसिट) |
| इनपुट | स्ट्रिंग, बफर, ऑब्जेक्ट, एरे | कोई भी JSON-सिरियलाइज़ेबल वैल्यू |
| सीरियलाइज़ेशन | ऑब्जेक्ट्स के लिए JSON.stringify | JSON.stringify (बिल्ट-इन) |
| कन्वर्जन | स्ट्रिंग/बफर को जैसा है भेजता है | हमेशा JSON में कन्वर्ट करता है |
व्यवहार अंतर
// res.send - स्ट्रिंग जैसी है वैसी भेजता है
res.send('{"name": "John"}'); // Content-Type: text/html; क्लाइंट को स्ट्रिंग मिलती है
// res.json - ऑब्जेक्ट को JSON में सीरियलाइज़ करता है
res.json({ name: 'John' }); // Content-Type: application/json; क्लाइंट को ऑब्जेक्ट मिलता है
// res.send ऑब्जेक्ट के साथ - ऑटो JSON में कन्वर्ट करता है
res.send({ name: 'John' }); // Content-Type: application/json (ऑटो-डिटेक्ट!)
कब उपयोग करें
- res.json(): API एंडपॉइंट्स, जब आप स्पष्ट JSON रिस्पांस चाहते हैं
- res.send(): HTML पेजेस, प्लेन टेक्स्ट, बफर्स, या जब कंटेंट टाइप मैटर नहीं करता
नोट: Express 4.x+ में, res.send() ऑब्जेक्ट्स/एरे को ऑटोमैटिकली JSON में कन्वर्ट करता है और Content-Type सेट करता है।