Node.js ऑब्जेक्ट डॉक्यूमेंटेशन का अनुरोध करता है? [बन्द है]


80

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

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

JSON.stringify () के साथ डिबगिंग मुझे एक त्रुटि देता है, कि ऑब्जेक्ट परिपत्र है और प्रोग्राम बंद हो जाता है। मैंने विभिन्न चीजों को देखा है 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 }

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

1
मैं प्रश्न के माध्यम से पढ़ता हूं, और यह मुझे बहुत उचित लगता है। यहाँ समस्या यह है कि यह ऐसी प्रतिक्रियाएँ हैं जो इसे एक प्रश्न से लेकर वार्तालाप / दया पक्ष के लिए भयानक प्रलेखन पर ले गई हैं। यदि कोई उचित उत्तर / स्पष्टीकरण दिया जा सकता है, तो मुझे लगता है कि यह प्रश्न निस्तारण योग्य है। शायद यहां तक ​​कि एक नया, संबंधित प्रश्न सबसे अच्छा है।
डेमॉन्गोलम

मैंने यह सवाल 6 साल पहले पूछा था। तब से मैं Nodejs प्रलेखन के माध्यम से पढ़ने के साथ एक बहुत अधिक अनुभव मिल गया है, और जो कभी भी Nodejs प्रलेखन पर काम करता है उसे अप टू डेट और सटीक रखने का एक जबरदस्त काम किया है। मुझे लगता है कि इस सवाल ने बहुत ध्यान आकर्षित किया है क्योंकि यह एक सरल सवाल है, लेकिन यह दर्शाता है कि कंसोल के माध्यम से बहुत सारी जानकारी उपलब्ध है। यदि आप किसी चीज पर अटके हुए हैं तो।
बेंजामिन कॉलिन्स

जवाबों:


26

मुझे यकीन नहीं है कि यह एक सही उत्तर है क्योंकि यह मुझे सीधा लगता है, लेकिन क्या आपने http://nodejs.org/api/http.html#http_http_incomingmessage पर एक नज़र डाली है ?

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

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

आशा है कि इससे सहायता मिलेगी।


उफ़, मेरा मतलब था json.stringify, json.parse नहीं। आपके लिए उल्लेख करने के लिए (मैं अनुरोध में) दृष्टिकोण का प्रयास करने के लिए वापस चला गया और किसी कारण से, बस कंसोल कर रहा था। (अनुरोध) काम करना समाप्त हो गया। मुझे उम्मीद थी कि यह सिर्फ कहने के लिए होगा, [वस्तु वस्तु]। हो सकता है कि इसमें कंसोल के लिए एक विशिष्ट स्टीयरिंग फ़ंक्शन है? उत्तर के लिए धन्यवाद।
बेंजामिन कॉलिन्स 15

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

2
_readableState, readable, domain, _events, _maxListeners, socket, connection, httpVersion, complete, headers, trailers, _pendings, _pendingIndex, url, method, statusCode, client, _consuming, _dumped, httpVersionMajor, httpVersionMinor, upgrade, setTimeout, read, _read, destroy, _addHeaderLine, _dump, push, unshift, setEncoding, pipe, unpipe, on, addListener, resume, pause, wrap, setMaxListeners, emit, once, removeListener, removeAllListeners,listeners
CaffeineAddiction

3
लिंक पुराना है: nodejs.org/api/http.html#http_class_http_incomingmessage
Wex

10

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

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

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

तथा

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

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


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

स्पमको लिंक टूट गया है।
चार्ल्स होलब्रो जूल

पार्स प्रलेखन अधिक से अधिक पूरा हो गया है: parse.com/docs/js/symbols/http.IncomingMessage.html
चार्ल्स

वह पार्स url 404, fwiw
जॉन बिज़

आप कभी भी http "फ्रेमवर्क" का उपयोग क्यों करेंगे? Node.js मूल रूप से http करता है।
बीटी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.