2013-06-22 7 views
67

यह एक बहुत सीधी सवाल है, लेकिन मुझे Google पर कुछ भी नहीं मिला है। मैं Node.js के सर्वर फ़ंक्शन में अनुरोध पैरामीटर पर दस्तावेज़ों की तलाश में हूं, लेकिन मुझे कुछ भी नहीं मिला है। JSON.stringify() के साथNode.js अनुरोध ऑब्जेक्ट दस्तावेज?

http.createServer(function(request, response){ 
    console.log(JSON.stringify(request)); 
}); 

डिबगिंग मुझे एक त्रुटि देता है, उस वस्तु परिपत्र और कार्यक्रम बंद हो जाता है। मैंने request.url, या request.body जैसी विभिन्न चीजें देखी हैं, लेकिन क्या कोई अनुरोध सभी अनुरोध कार्यों और पैरामीटर को दस्तावेज कर रहा है? ऐसा लगता है कि इसे ढूंढना आसान होना चाहिए, मुझे बस यह प्रतीत नहीं होता है।

मैंने इसे फिर से कोशिश की, और यह सिर्फ console.log(request) अनुरोध से सभी डेटा लिखता है।

ondata: [Function], 
    _httpMessage: 
     { domain: null, 
     _events: [Object], 
     _maxListeners: 10, 
     output: [], 
     outputEncodings: [], 
     writable: true, 
     _last: false, 
     chunkedEncoding: false, 
     shouldKeepAlive: true, 
     useChunkedEncodingByDefault: true, 
     sendDate: true, 
     _hasBody: true, 
     _trailer: '', 
     finished: false, 
     _hangupClose: false, 
     socket: [Circular], 
     connection: [Circular] } }, 
    connection: 
    { _connecting: false, 
    _handle: 
     { fd: null, 
     writeQueueSize: 0, 
     owner: [Circular], 
     onread: [Function: onread], 
     reading: true }, 
    _readableState: 
     { highWaterMark: 16384, 
     buffer: [], 
     length: 0, 
     pipes: null, 
     pipesCount: 0, 
     flowing: false, 
     ended: false, 
     endEmitted: false, 
     reading: true, 
     calledRead: true, 
     sync: false, 
     needReadable: true, 
     emittedReadable: false, 
     readableListening: false, 
     objectMode: false, 
     defaultEncoding: 'utf8', 
     ranOut: false, 
     awaitDrain: 0, 
     readingMore: false, 
     decoder: null, 
     encoding: null }, 
    readable: true, 
    domain: null, 
    _events: 
     { end: [Object], 
     finish: [Function: onSocketFinish], 
     _socketEnd: [Function: onSocketEnd], 
     drain: [Function: ondrain], 
     timeout: [Function], 
     error: [Function], 
     close: [Object] }, 
    _maxListeners: 10, 
    _writableState: 
     { highWaterMark: 16384, 
     objectMode: false, 
     needDrain: false, 
     ending: false, 
     ended: false, 
     finished: false, 
     decodeStrings: false, 
     defaultEncoding: 'utf8', 
     length: 0, 
     writing: false, 
     sync: true, 
     bufferProcessing: false, 
     onwrite: [Function], 
     writecb: null, 
     writelen: 0, 
     buffer: [] }, 
    writable: true, 
    allowHalfOpen: true, 
    onend: [Function], 
    destroyed: false, 
    errorEmitted: false, 
    bytesRead: 357, 
    _bytesDispatched: 0, 
    _pendingData: null, 
    _pendingEncoding: '', 
    server: 
     { domain: null, 
     _events: [Object], 
     _maxListeners: 10, 
     _connections: 1, 
     connections: [Getter/Setter], 
     _handle: [Object], 
     _usingSlaves: false, 
     _slaves: [], 
     allowHalfOpen: true, 
     httpAllowHalfOpen: false, 
     timeout: 120000, 
     _connectionKey: '4:0.0.0.0:1337' }, 
    _idleTimeout: 120000, 
    _idleNext: 
     { _idleNext: [Circular], 
     _idlePrev: [Circular], 
     msecs: 120000, 
     ontimeout: [Function: listOnTimeout] }, 
    _idlePrev: 
     { _idleNext: [Circular], 
     _idlePrev: [Circular], 
     msecs: 120000, 
     ontimeout: [Function: listOnTimeout] }, 
    _idleStart: 1371952289619, 
    parser: 
     { _headers: [], 
     _url: '', 
     onHeaders: [Function: parserOnHeaders], 
     onHeadersComplete: [Function: parserOnHeadersComplete], 
     onBody: [Function: parserOnBody], 
     onMessageComplete: [Function: parserOnMessageComplete], 
     socket: [Circular], 
     incoming: [Circular], 
     maxHeaderPairs: 2000, 
     onIncoming: [Function] }, 
    ondata: [Function], 
    _httpMessage: 
     { domain: null, 
     _events: [Object], 
     _maxListeners: 10, 
     output: [], 
     outputEncodings: [], 
     writable: true, 
     _last: false, 
     chunkedEncoding: false, 
     shouldKeepAlive: true, 
     useChunkedEncodingByDefault: true, 
     sendDate: true, 
     _hasBody: true, 
     _trailer: '', 
     finished: false, 
     _hangupClose: false, 
     socket: [Circular], 
     connection: [Circular] } }, 
    httpVersion: '1.1', 
    complete: false, 
    headers: 
    { host: 'localhost:1337', 
    connection: 'keep-alive', 
    'cache-control': 'max-age=0', 
    accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like 
Gecko) Chrome/27.0.1453.116 Safari/537.36', 
    'accept-encoding': 'gzip,deflate,sdch', 
    'accept-language': 'en-US,en;q=0.8,ja;q=0.6' }, 
    trailers: {}, 
    _pendings: [], 
    _pendingIndex: 0, 
    url: '/', 
    method: 'GET', 
    statusCode: null, 
    client: 
    { _connecting: false, 
    _handle: 
     { fd: null, 
     writeQueueSize: 0, 
     owner: [Circular], 
     onread: [Function: onread], 
     reading: true }, 
    _readableState: 
     { highWaterMark: 16384, 
     buffer: [], 
     length: 0, 
     pipes: null, 
     pipesCount: 0, 
     flowing: false, 
     ended: false, 
     endEmitted: false, 
     reading: true, 
     calledRead: true, 
     sync: false, 
     needReadable: true, 
     emittedReadable: false, 
     readableListening: false, 
     objectMode: false, 
     defaultEncoding: 'utf8', 
     ranOut: false, 
     awaitDrain: 0, 
     readingMore: false, 
     decoder: null, 
     encoding: null }, 
    readable: true, 
    domain: null, 
    _events: 
     { end: [Object], 
     finish: [Function: onSocketFinish], 
     _socketEnd: [Function: onSocketEnd], 
     drain: [Function: ondrain], 
     timeout: [Function], 
     error: [Function], 
     close: [Object] }, 
    _maxListeners: 10, 
    _writableState: 
     { highWaterMark: 16384, 
     objectMode: false, 
     needDrain: false, 
     ending: false, 
     ended: false, 
     finished: false, 
     decodeStrings: false, 
     defaultEncoding: 'utf8', 
     length: 0, 
     writing: false, 
     sync: true, 
     bufferProcessing: false, 
     onwrite: [Function], 
     writecb: null, 
     writelen: 0, 
     buffer: [] }, 
    writable: true, 
    allowHalfOpen: true, 
    onend: [Function], 
    destroyed: false, 
    errorEmitted: false, 
    bytesRead: 357, 
    _bytesDispatched: 0, 
    _pendingData: null, 
    _pendingEncoding: '', 
    server: 
     { domain: null, 
     _events: [Object], 
     _maxListeners: 10, 
     _connections: 1, 
     connections: [Getter/Setter], 
     _handle: [Object], 
     _usingSlaves: false, 
     _slaves: [], 
     allowHalfOpen: true, 
     httpAllowHalfOpen: false, 
     timeout: 120000, 
     _connectionKey: '4:0.0.0.0:1337' }, 
    _idleTimeout: 120000, 
    _idleNext: 
     { _idleNext: [Circular], 
     _idlePrev: [Circular], 
     msecs: 120000, 
     ontimeout: [Function: listOnTimeout] }, 
    _idlePrev: 
     { _idleNext: [Circular], 
     _idlePrev: [Circular], 
     msecs: 120000, 
     ontimeout: [Function: listOnTimeout] }, 
    _idleStart: 1371952289619, 
    parser: 
     { _headers: [], 
     _url: '', 
     onHeaders: [Function: parserOnHeaders], 
     onHeadersComplete: [Function: parserOnHeadersComplete], 
     onBody: [Function: parserOnBody], 
     onMessageComplete: [Function: parserOnMessageComplete], 
     socket: [Circular], 
     incoming: [Circular], 
     maxHeaderPairs: 2000, 
     onIncoming: [Function] }, 
    ondata: [Function], 
    _httpMessage: 
     { domain: null, 
     _events: [Object], 
     _maxListeners: 10, 
     output: [], 
     outputEncodings: [], 
     writable: true, 
     _last: false, 
     chunkedEncoding: false, 
     shouldKeepAlive: true, 
     useChunkedEncodingByDefault: true, 
     sendDate: true, 
     _hasBody: true, 
     _trailer: '', 
     finished: false, 
     _hangupClose: false, 
     socket: [Circular], 
     connection: [Circular] } }, 
    _consuming: false, 
    _dumped: false, 
    httpVersionMajor: 1, 
    httpVersionMinor: 1, 
    upgrade: false } 
+48

आपको मेरी सहानुभूति है। अधिकांश आधुनिक भाषाओं, पुस्तकालयों, और ढांचे में भयानक संदर्भ दस्तावेज हैं। यदि आप नीचे निर्दिष्ट नोड दस्तावेज पर जाते हैं, तो आप पाएंगे कि यह वास्तव में बिल्कुल संदर्भ नहीं है; यह एक चर्चा का अधिक है। उदाहरण के लिए, createServer() दस्तावेज़ कहता है कि यह पैरामीटर के रूप में लेता है "एक फ़ंक्शन जिसे स्वचालित रूप से 'अनुरोध' ईवेंट में जोड़ा जाता है" और "वेब सर्वर ऑब्जेक्ट" देता है। इन चीजों में से किसी भी प्रकार का 'प्रकार' के बारे में कोई संकेत नहीं है, और निश्चित रूप से उन चीजों के लिए संदर्भ दस्तावेज़ का कोई लिंक नहीं है। वे क्या हैं? दस्तावेज़ों के लिए एफ ऋण। – jarmod

उत्तर

22

मुझे यकीन है कि अगर यह एक सही जवाब है यह मेरे लिए स्पष्ट लगता है, लेकिन आप http://nodejs.org/api/http.html#http_http_incomingmessage पर एक नजर है था नहीं कर रहा हूँ: यहाँ यह सिर्फ एक संदर्भ के रूप में है?

अनुरोध उपर्युक्त वस्तु का उदाहरण है।

for (i in request) { 
    //Your code here 
} 

: वैसे, अगर तुम सच में क्या "जानवर बल," आप इसे पार्स नहीं करना चाहिए, के रूप में यह बिल्कुल JSON स्ट्रिंग नहीं होगा, लेकिन इसके बजाय की तरह कुछ करने के साथ उस वस्तु के अंदर देखना चाहते हैं आशा करता हूँ की ये काम करेगा।

+0

ओह, मेरा मतलब json.stringify है, json.parse नहीं। आपके द्वारा अनुरोध किए जाने वाले दृष्टिकोण (अनुरोध में) दृष्टिकोण का प्रयास करने के लिए वापस आ गया और किसी कारण से, केवल console.log (अनुरोध) कर रहा है। मुझे उम्मीद है कि यह कहने के लिए, [ऑब्जेक्ट ऑब्जेक्ट]। शायद यह कंसोल के लिए एक विशिष्ट toString समारोह है? उत्तर के लिए धन्यवाद। – Seiche

+4

अभी तक बेहतर है, किसी ऑब्जेक्ट के अंदर क्या है, देखने के लिए use.inspect() का उपयोग करें। एक मूल मॉड्यूल है; आप बस 'var util = आवश्यकता (' उपयोग '); 'और' util.inspect (obj) 'कर सकते हैं। 'JSON.stringify()' के साथ एक मूल मुद्दा यह है कि यदि चक्रवात संदर्भ हैं तो यह शिकायत करेगा। –

+1

'_readableState',' पठनीय', 'डोमेन',' _events', '_maxListeners',' सॉकेट', 'कनेक्शन',' httpVersion', 'पूर्ण', 'शीर्षलेख', 'ट्रेलरों',' _pendings', ' _pendingIndex', 'url',' method', 'statusCode',' client', '_consuming',' _dumped', 'httpVersionMajor',' httpVersionMinor', ​​'upgrade', 'setTimeout',' read',' _read' , 'नष्ट करें', '_addHeaderLine',' _dump', 'push',' unshift', 'setEncoding', 'पाइप',' unpipe', 'on',' addListener', 'resume',' pause',' ' रैप ',' सेटमैक्स लिस्टेनर्स ',' एमिट ',' एक बार ',' हटाएं लिस्टर ',' हटाएं ऑललिस्टर्स ',' श्रोताओं ' – CaffeineAddiction

6

मैं डेलीओ से सहमत हूं, अनुरोध ऑब्जेक्ट इनकमिंग मैसेज ऑब्जेक्ट का प्रकार है, जिसे http.ClientRequest द्वारा बनाया गया है।

8

नोड.जेएस में एक सापेक्ष नौसिखिया के रूप में जोड़ने के लिए, मुझे यह भ्रमित लगता है कि प्रत्येक ढांचे के पास "अनुरोध" ऑब्जेक्ट का अपना कार्यान्वयन होता है।

उदाहरण के लिए,

एक्सप्रेस: ​​http://expressjs.com/api.html#req.param

और

Hapi: http://spumko.github.io/resource/api/#request-object (बस ध्यान दें कि कच्चे अनुरोध वस्तु अभी भी request.raw.req में उपलब्ध है)

कुछ लाइब्रेरी एक्सप्रेस '' req.param "विधि की उपस्थिति मानते हैं, और गैर-एक्सप्रेस परियोजनाओं में उपयोग होने पर असफल होते हैं।

+0

आपको बहुत धन्यवाद एक्सप्रेस एपीआई विकल्प साझा करने के लिए बहुत कुछ। –

+0

स्पूम्को लिंक टूटा हुआ है। –

+0

पार्स प्रलेखन सबसे अधिक से अधिक पूर्ण है: https://parse.com/docs/js/symbols/http.IncomingMessage.html –

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