2010-12-28 20 views
10

अब उदाहरण के रूप में, मैं एक प्रतिक्रिया जो आंशिक रूप से कुंजी/एक जावास्क्रिप्ट वस्तु के रूप में मान हैं हो रही है:पढ़ना Node.js साथ भेजे HTTP हेडर

status: '200 OK', 
'content-encoding': 'gzip' 

मैं आसानी से बाहर पढ़ने के लिए और स्थिति संदेश लॉग इन कर सकते द्वारा: headers.status लेकिन जब मैं सामग्री एन्कोडिंग (जो मैं इस विशेष स्थिति में जरूरत है) लॉग इन करने पर यह त्रुटियों का प्रयास करें:

headers.'content-encoding' <- obviously the quotes it doesn't like 
headers.content-encoding <- obviously the '-' it doesn't like 

कैसे कर रहा हूँ मैं पाने के लिए लगता है/पढ़/log यह सामग्री एन्कोडिंग मूल्य है ?

स्वागत करती है,

m0rph3v5

उत्तर

20

जावास्क्रिप्ट भी गुण की चर्चा करते हुए, इसलिए यदि headers एक उपयुक्त वस्तु है, तो आप headers['content-encoding'] उपयोग कर सकते हैं के लिए वर्ग कोष्ठक अंकन का समर्थन करता है।

+0

धन्यवाद एक गुच्छा, बेवकूफ रूप से मैंने जिस तरह से कोशिश की वह सब कुछ है। ['कंटेंट-एन्कोडिंग'] नहीं सोच रहा कि मैं दुर्घटना से दोनों को जोड़ रहा हूं। :) – M0rph3v5

+1

हमेशा पहली बार होता है :-) शुभकामनाएं। –

4

जावास्क्रिप्ट गुणों के नाम आपके नाम हैं। जब नाम एक कानूनी पहचानकर्ता होता है और जब आप कोड लिख रहे होते हैं तो आप उस शाब्दिक नाम को जानते हैं, जिसे आप बिंदीदार नोटेशन के साथ उपयोग कर सकते हैं।

var foo = headers.foo; 

जब नाम एक कानूनी पहचानकर्ता नहीं है, या यदि आप नाम आप क्रम पर देख रहे हैं निर्धारित करने के लिए चाहते हैं, आप एक स्ट्रिंग का उपयोग कर सकते हैं:

var encoding = headers['content-encoding']; 

या

var name = 'content-encoding'; 
var encoding = headers[name]; 

या यहाँ तक कि

var x = 'encoding'; 
var encoding = headers['content-' + x]; 

के रूप में आप देख सकते हैं, यह शाब्दिक स्ट्रिंग होना आवश्यक नहीं है। यह सामान्य प्रयोजन कार्यों के लिए बहुत आसान है जिसे एक संपत्ति नाम को फ़ंक्शन तर्क या समान के रूप में स्वीकार करना होता है।

ध्यान दें कि संपत्ति के नाम केस संवेदनशील हैं।

4

मुझे लगता है कि आपको बहुत अच्छा express ढांचा स्थापित करना चाहिए। मैं वास्तव में node.js वेब डेवलपमेंट को सरल बनाता है।

आप NPM

npm install express 

यह टुकड़ा आप हेडर सेट और

$curl http://localhost:3000/ -H "a:3434" -v 
* About to connect() to localhost port 3000 (#0) 
* Trying ::1... Connection refused 
* Trying 127.0.0.1... connected 
* Connected to localhost (127.0.0.1) port 3000 (#0) 
> GET/HTTP/1.1 
> User-Agent: curl/7.21.2 (i686-pc-linux-gnu) libcurl/7.21.2 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18 
> Host: localhost:3000 
> Accept: */* 
> a:3434 
> 
< HTTP/1.1 200 OK 
< X-Powered-By: Express 
< time: 12345 
< Content-Type: text/html; charset=utf-8 
< Content-Length: 11 
< Date: Tue, 28 Dec 2010 13:58:41 GMT 
< X-Response-Time: 1ms 
< Connection: keep-alive 
< 
* Connection #0 to host localhost left intact 
* Closing connection #0 
Hello World 

लॉग कमांड लाइन से हेडर

var express = require('express'); 

var app = express.createServer(); 

app.get('/', function(req, res){ 
    console.log(req.header('a')); 
    res.header('time', 12345); 

    res.send('Hello World'); 
}); 

app.listen(3000); 

पढ़ कर्ल outputting करने के लिए कैसे पता चलता है का उपयोग कर इसे स्थापित कर सकता है हेडर सर्वर पर कर्ल के माध्यम से भेजें:

$ node mo.js 
3434 
संबंधित मुद्दे