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()ドキュメントには、パラメータとして「 'request'イベントに自動的に追加される関数」を取り、「Webサーバーオブジェクト」を返すと記載されています。これらのいずれかが「タイプ」であるかについてのヒントはなく、確かにそれらのリファレンスドキュメントへのリンクもありません。彼らは何ですか?ドキュメントのFマイナス。
jarmod 2013

1
私は質問を読み通しました、そしてそれは私にはかなり合理的なようです。ここでの問題は、恐ろしいドキュメンテーションに関する質問から会話/哀れなパーティーへのこれをとった応答であるということです。合理的な答え/説明が与えられれば、この質問は救済可能だと思います。おそらく、新しい関連する質問でさえも最善です。
demongolem

私は6年前にこの質問をしました。それ以来、Nodejsのドキュメントを読むことでより多くの経験を積むことができ、Nodejsのドキュメントに取り組んだ人は、それを最新かつ正確に保つという途方もない仕事をしてきました。この質問は単純な質問であるため、多くの注目を集めていると思いますが、何かに行き詰まった場合に備えて、console.logから入手できる情報がたくさんあることを示しています。
ベンジャミンコリンズ

回答:


26

わかりやすいように思われるので、これが正しい返信かどうかはわかりませんが、 http://nodejs.org/api/http.html#http_http_incomingmessageをご覧になりましたか?

リクエストは上記のオブジェクトのインスタンスです。ちなみに、「ブルートフォース」でそのオブジェクトの内部を本当に確認したい場合は、JSON文字列ではないため、解析しないでください。代わりに、次のようにします。

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

それが役に立てば幸い。


おっと、私はjson.parseではなくjson.stringifyを意味しました。あなたが言及したfor(i in request)アプローチを試してみましたが、何らかの理由で、console.log(request)を実行するだけで機能しました。[オブジェクトオブジェクト]とだけ言うと思っていました。多分それはコンソールのための特定のtoString関数を持っていますか?返信いただきありがとうございます。
ベンジャミンコリンズ

5
さらに良いことに、オブジェクトの内部を確認するには、util.inspect()を使用します。Utilはコアモジュールです。あなたは、単にすることができますvar util=require('util');util.inspect(obj)。の基本的な問題JSON.stringify()は、循環参照があると文句を言うことです。
Thalis K.

2
_readableStatereadabledomain_events_maxListenerssocketconnectionhttpVersioncompleteheaderstrailers_pendings_pendingIndexurlmethodstatusCodeclient_consuming_dumpedhttpVersionMajorhttpVersionMinorupgradesetTimeoutread_readdestroy_addHeaderLine_dumppushunshiftsetEncodingpipeunpipeonaddListenerresumepausewrapsetMaxListenersemitonceremoveListenerremoveAllListenerslisteners
CaffeineAddiction


10

付け加えると、Node.jsの比較的初心者として、各フレームワークに「リクエスト」オブジェクトの独自の実装があることは混乱を招きます。

例えば、

Express:http//expressjs.com/api.html#req.param

そして

Hapi:http//spumko.github.io/resource/api/#request-object(rawリクエストオブジェクトはまだrequest.raw.reqで利用可能であることに注意してください)

一部のライブラリは、Expressの「req.param」メソッドの存在を前提としており、Express以外のプロジェクトで使用すると失敗します。


エクスプレスAPIオプションを共有していただきありがとうございます。
ムハンマドライハンムハイミン2014年

spumkoリンクが壊れています。
チャールズホルブロウ2014

解析ドキュメントは、ほとんどのドキュメントよりも完全です。parse.com
Charles Holbrow 2014

その解析URLは404、fwiw
Jon Biz

なぜhttp「フレームワーク」を使用するのでしょうか。Node.jsはhttpをネイティブに実行します。
BT

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.