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 () 문서는 " '요청'이벤트에 자동으로 추가되는 함수"를 매개 변수로 취하고 "웹 서버 객체"를 반환한다고 말합니다. 이러한 것들 중 '유형'이 무엇인지에 대한 힌트가 없으며 해당 항목에 대한 참조 문서에 대한 링크도 없습니다. 그들은 무엇인가? 문서의 경우 F 빼기.
jarmod

1
나는 질문을 읽었고 그것은 나에게 꽤 합리적으로 보입니다. 여기서 문제는 끔찍한 문서에 대한 대화 / 불쌍한 파티에 대한 질문에서 이것을 취한 응답이라는 것입니다. 합리적인 대답 / 설명이 주어지면이 질문은 구제 할 수 있다고 생각합니다. 아마도 새로운 관련 질문이 가장 좋습니다.
demongolem

6 년 전에이 질문을했습니다. 그 이후로 저는 Nodejs 문서를 읽는 데 더 많은 경험을 쌓았으며 Nodejs 문서 작업을 해본 사람은이 문서를 최신 상태로 정확하게 유지하는 데 엄청난 일을했습니다. 이 질문은 간단한 질문이기 때문에 많은 관심을 받았다고 생각 합니다만, 무언가에 갇힌 경우 console.log를 통해 많은 정보를 얻을 수 있음을 보여줍니다.
Benjamin Collins

답변:


26

나에게 간단 해 보이므로 이것이 올바른 답장인지 확실하지 않지만 http://nodejs.org/api/http.html#http_http_incomingmessage를 살펴 보셨습니까 ?

요청은 위 개체의 인스턴스입니다. 그건 그렇고, 만약 당신이 정말로 "brute force"로 그 객체 안에 무엇이 있는지보고 싶다면, JSON 문자열이 아니기 때문에 그것을 파싱해서는 안됩니다. 대신에 다음과 같은 것을하세요 :

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

도움이 되었기를 바랍니다.


죄송합니다. json.parse가 아니라 json.stringify를 의미했습니다. 당신이 언급 한 for (i in request) 접근 방식을 시도하기 위해 돌아 왔고 어떤 이유로 console.log (request)를 수행하면 결국 작동합니다. 그냥 [Object object]라고 말하길 바랬습니다. 콘솔에 대한 특정 toString 함수가 있습니까? 답장을 보내 주셔서 감사합니다.
Benjamin Collins

5
더 좋은 방법은 객체 내부에 무엇이 있는지 보려면 util.inspect ()를 사용하는 것입니다. Util은 핵심 모듈입니다. 당신은 간단 var util=require('util');하고 util.inspect(obj). 의 기본적인 문제 JSON.stringify()는 순환 참조가 있으면 불평한다는 것입니다.
Thalis K.

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
Wex

10

덧붙여서 Node.js의 상대적인 초보자로서 각 프레임 워크가 "요청"객체의 자체 구현을 가지고 있다는 점이 혼란 스럽습니다.

예를 들면

익스프레스 : http://expressjs.com/api.html#req.param

Hapi : http://spumko.github.io/resource/api/#request-object (원시 요청 객체는 request.raw.req에서 계속 사용할 수 있음에 유의)

일부 라이브러리는 Express의 "req.param"메소드가 있다고 가정하고 비 Express 프로젝트에서 사용하면 실패합니다.


Express API 옵션을 공유해 주셔서 대단히 감사합니다.
Muhammad Raihan Muhaimin 2014 년

spumko 링크가 끊어졌습니다.
Charles Holbrow

: 구문 분석 문서는 대부분의보다 완료 parse.com/docs/js/symbols/http.IncomingMessage.html
찰스 Holbrow

그 구문 분석 URL이 FWIW, 404
존 판매

http "프레임 워크"를 사용하는 이유는 무엇입니까? Node.js는 기본적으로 http를 수행합니다.
BT

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.