2011-01-14 10 views
135

निम्नलिखित एक्सप्रेस समारोह में:एक्सप्रेस कार्यों में "res" और "req" पैरामीटर क्या हैं?

app.get('/user/:id', function(req, res){ 
    res.send('user ' + req.params.id); 
}); 

req और res क्या है? वे किसके लिए खड़े हैं, उनका क्या मतलब है और वे क्या करते हैं?

उत्तर

202

req एक ऑब्जेक्ट है जिसमें ईवेंट को उठाए गए HTTP अनुरोध के बारे में जानकारी है। req के जवाब में, आप वांछित HTTP प्रतिक्रिया वापस भेजने के लिए res का उपयोग करें।

उन पैरामीटरों का नाम कुछ भी हो सकता है। अगर इसे और अधिक स्पष्ट है आप इस के लिए कि कोड को बदल सकता है:

app.get('/user/:id', function(request, response){ 
    response.send('user ' + request.params.id); 
}); 

संपादित करें:

आप इस विधि है कहते हैं:

app.get('/people.json', function(request, response) { }); 

अनुरोध इस तरह के गुण (के साथ एक वस्तु हो जाएगा बस कुछ नाम हैं):

  • request.url, "/people.json" जब यह खासकर हो जाएगा जो lar कार्रवाई
  • request.method, जो इस मामले में "GET", इसलिए app.get() कॉल हो जाएगा शुरू हो रहा है।
  • request.headers में HTTP हेडर की एक सरणी, request.headers.accept जैसी मदों, जो आप निर्धारित करने के लिए ब्राउज़र की किस तरह अनुरोध, प्रतिक्रियाओं किस तरह इसे संभाल कर सकते हैं, या नहीं, यह HTTP संपीड़न, आदि को समझने में सक्षम है बनाया का उपयोग कर सकते युक्त
  • request.params (जैसे /people.json?foo=bar में request.params.foo में स्ट्रिंग "bar") के परिणामस्वरूप क्वेरी स्ट्रिंग पैरामीटर की एक सरणी होगी।

उस अनुरोध का जवाब देने के लिए, आप अपनी प्रतिक्रिया बनाने के लिए प्रतिक्रिया ऑब्जेक्ट का उपयोग करते हैं। people.json उदाहरण पर विस्तार करने के लिए:

app.get('/people.json', function(request, response) { 
    // We want to set the content-type header so that the browser understands 
    // the content of the response. 
    response.contentType('application/json'); 

    // Normally, the would probably come from a database, but we can cheat: 
    var people = [ 
    { name: 'Dave', location: 'Atlanta' }, 
    { name: 'Santa Claus', location: 'North Pole' }, 
    { name: 'Man in the Moon', location: 'The Moon' } 
    ]; 

    // Since the request is for a JSON representation of the people, we 
    // should JSON serialize them. The built-in JSON.stringify() function 
    // does that. 
    var peopleJSON = JSON.stringify(people); 

    // Now, we can use the response object's send method to push that string 
    // of people JSON back to the browser in response to this request: 
    response.send(peopleJSON); 
}); 
+1

मुझे यह नहीं मिला। क्या आप एक उदाहरण दिखा सकते हैं कि प्रतिक्रिया क्या हो सकती है? और परिणाम कैसा दिखता है? – expressnoob

+0

आप हेडर – generalhenry

+2

के साथ पूर्ण प्रतिक्रिया देखने के लिए कर्ल का उपयोग कर सकते हैं और अधिक स्पष्टीकरण के साथ उत्तर अपडेट किया गया है। क्या यह ज़्यादा सही लगता है? –

4

अनुरोध और प्रतिक्रिया।

req को समझने के लिए, console.log (req) को आजमाएं;

20

मैं डेव वार्ड जवाब में एक त्रुटि देखा (शायद एक हाल ही में परिवर्तन?): क्वेरी स्ट्रिंग paramaters, request.paramsrequest.query में हैं नहीं। भी (https://stackoverflow.com/a/6913287/166530 देखें)

request.params डिफ़ॉल्ट रूप से किसी भी "घटक मैचों" मार्गों में से मूल्य से भर जाता है, यानी

app.get('/user/:id', function(request, response){ 
    response.send('user ' + request.params.id); 
}); 

और, यदि आप अपने bodyparser (app.use(express.bodyParser());) का उपयोग करने एक्सप्रेस द्वारा कॉन्फ़िगर किए गए पोस्ट के साथ 'एड फॉर्मडाटा। (How to retrieve POST query parameters? देखें)

संबंधित मुद्दे