title: HTTP request callback on Node JS with Node JS
body: <p>Hi I am trying to get a response via a http using the callback method. But I get a lot of information but not my data : </p>
  
  <pre><code>    Request {
    domain: null,
    _events: 
     { error: [Function: bound ],
       complete: [Function: bound ],
       pipe: [Function] },
    _eventsCount: 3,
    _maxListeners: undefined,
    uri: 
     Url {
       protocol: 'http:',
       slashes: true,
       auth: null,
       host: 'localhost',
       port: 80,
       hostname: 'localhost',
       hash: null,
       search: '?filter=route_short_name',
       query: 'filter=route_short_name',
       pathname: '/php-rest/api.php/routes',
       path: '/php-rest/api.php/routes?filter=route_short_name',
       href: 'http://localhost/php-rest/api.php/routes?filter=route_short_name' },
    callback: [Function],
    readable: true,
    writable: true,
    _qs: 
     Querystring {
       request: [Circular],
       lib: { formats: [Object], parse: [Function], stringify: [Function] },
       useQuerystring: undefined,
       parseOptions: {},
       stringifyOptions: {} },
    _auth: 
     Auth {
       request: [Circular],
       hasAuth: false,
       sentAuth: false,
       bearerToken: null,
       user: null,
       pass: null },
    _oauth: OAuth { request: [Circular], params: null },
    _multipart: 
     Multipart {
       request: [Circular],
       boundary: '9ab5d31f-9896-4fb9-8f89-47e5501e9342',
       chunked: false,
       body: null },
    _redirect: 
     Redirect {
       request: [Circular],
       followRedirect: true,
       followRedirects: true,
       followAllRedirects: false,
       followOriginalHttpMethod: false,
       allowRedirect: [Function],
       maxRedirects: 10,
       redirects: [],
       redirectsFollowed: 0,
       removeRefererHeader: false },
    _tunnel: 
     Tunnel {
       request: [Circular],
       proxyHeaderWhiteList: 
        [ 'accept',
          'accept-charset',
          'accept-encoding',
          'accept-language',
          'accept-ranges',
          'cache-control',
          'content-encoding',
          'content-language',
          'content-location',
          'content-md5',
          'content-range',
          'content-type',
          'connection',
          'date',
          'expect',
          'max-forwards',
          'pragma',
          'referer',
          'te',
          'user-agent',
          'via' ],
       proxyHeaderExclusiveList: [] },
    headers: { host: 'localhost' },
    setHeader: [Function],
    hasHeader: [Function],
    getHeader: [Function],
    removeHeader: [Function],
    method: 'GET',
    localAddress: undefined,
    pool: {},
    dests: [],
    __isRequestRequest: true,
    _callback: [Function],
    proxy: null,
    tunnel: false,
    setHost: true,
    originalCookieHeader: undefined,
    _disableCookies: true,
    _jar: undefined,
    port: 80,
    host: 'localhost',
    path: '/php-rest/api.php/routes?filter=route_short_name',
    httpModule: 
     { IncomingMessage: { [Function: IncomingMessage] super_: [Object] },
       METHODS: 
        [ 'ACL',
          'BIND',
          'CHECKOUT',
          'CONNECT',
          'COPY',
          'DELETE',
          'GET',
          'HEAD',
          'LINK',
          'LOCK',
          'M-SEARCH',
          'MERGE',
          'MKACTIVITY',
          'MKCALENDAR',
          'MKCOL',
          'MOVE',
          'NOTIFY',
          'OPTIONS',
          'PATCH',
          'POST',
          'PROPFIND',
          'PROPPATCH',
          'PURGE',
          'PUT',
          'REBIND',
          'REPORT',
          'SEARCH',
          'SUBSCRIBE',
          'TRACE',
          'UNBIND',
          'UNLINK',
          'UNLOCK',
          'UNSUBSCRIBE' ],
       OutgoingMessage: { [Function: OutgoingMessage] super_: [Object] },
       ServerResponse: { [Function: ServerResponse] super_: [Object] },
       STATUS_CODES: 
        { '100': 'Continue',
          '101': 'Switching Protocols',
          '102': 'Processing',
          '200': 'OK',
          '201': 'Created',
          '202': 'Accepted',
          '203': 'Non-Authoritative Information',
          '204': 'No Content',
          '205': 'Reset Content',
          '206': 'Partial Content',
          '207': 'Multi-Status',
          '208': 'Already Reported',
          '226': 'IM Used',
          '300': 'Multiple Choices',
          '301': 'Moved Permanently',
          '302': 'Found',
          '303': 'See Other',
          '304': 'Not Modified',
          '305': 'Use Proxy',
          '307': 'Temporary Redirect',
          '308': 'Permanent Redirect',
          '400': 'Bad Request',
          '401': 'Unauthorized',
          '402': 'Payment Required',
          '403': 'Forbidden',
          '404': 'Not Found',
          '405': 'Method Not Allowed',
          '406': 'Not Acceptable',
          '407': 'Proxy Authentication Required',
          '408': 'Request Timeout',
          '409': 'Conflict',
          '410': 'Gone',
          '411': 'Length Required',
          '412': 'Precondition Failed',
          '413': 'Payload Too Large',
          '414': 'URI Too Long',
          '415': 'Unsupported Media Type',
          '416': 'Range Not Satisfiable',
          '417': 'Expectation Failed',
          '418': 'I\'m a teapot',
          '421': 'Misdirected Request',
          '422': 'Unprocessable Entity',
          '423': 'Locked',
          '424': 'Failed Dependency',
          '425': 'Unordered Collection',
          '426': 'Upgrade Required',
          '428': 'Precondition Required',
          '429': 'Too Many Requests',
          '431': 'Request Header Fields Too Large',
          '451': 'Unavailable For Legal Reasons',
          '500': 'Internal Server Error',
          '501': 'Not Implemented',
          '502': 'Bad Gateway',
          '503': 'Service Unavailable',
          '504': 'Gateway Timeout',
          '505': 'HTTP Version Not Supported',
          '506': 'Variant Also Negotiates',
          '507': 'Insufficient Storage',
          '508': 'Loop Detected',
          '509': 'Bandwidth Limit Exceeded',
          '510': 'Not Extended',
          '511': 'Network Authentication Required' },
       Agent: { [Function: Agent] super_: [Object], defaultMaxSockets: Infinity },
       globalAgent: 
        Agent {
          domain: null,
          _events: [Object],
          _eventsCount: 1,
          _maxListeners: undefined,
          defaultPort: 80,
          protocol: 'http:',
          options: [Object],
          requests: {},
          sockets: {},
          freeSockets: {},
          keepAliveMsecs: 1000,
          keepAlive: false,
          maxSockets: Infinity,
          maxFreeSockets: 256 },
       ClientRequest: { [Function: ClientRequest] super_: [Object] },
       request: [Function],
       get: [Function],
       _connectionListener: [Function: connectionListener],
       Server: { [Function: Server] super_: [Object] },
       createServer: [Function],
       Client: [Function: deprecated],
       createClient: [Function: deprecated] },
    agentClass: 
     { [Function: Agent]
       super_: 
        { [Function: EventEmitter]
          EventEmitter: [Circular],
          usingDomains: false,
          defaultMaxListeners: [Getter/Setter],
          init: [Function],
          listenerCount: [Function] },
       defaultMaxSockets: Infinity },
    agent: 
     Agent {
       domain: null,
       _events: { free: [Function] },
       _eventsCount: 1,
       _maxListeners: undefined,
       defaultPort: 80,
       protocol: 'http:',
       options: { path: null },
       requests: {},
       sockets: {},
       freeSockets: {},
       keepAliveMsecs: 1000,
       keepAlive: false,
       maxSockets: Infinity,
       maxFreeSockets: 256 } }
  </code></pre>
  
  <p>My Node JS code is : </p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>var http    = require('http');
  
  function getRoutes(callback){
   var callback = request('http://localhost/php-rest/api.php/routes?filter=route_short_name', function(error, response, body, callback) {
    if (!error &amp;&amp; response.statusCode == 200) {
  
     result = JSON.stringify(JSON.parse(body));
     //console.log(result);
     //res.setHeader('Content-Type', 'application/json');
     //res.send(result);
     return callback = result;
    } else {
     //res.end('Error: ' + error);
     return callback =  error;
    }
   });
   return callback;
  }
  
  app.get('/getRoutes', function(req, res) {
  
   var data = getRoutes();
   console.log(data);
   //res.setHeader('Content-Type', 'application/json');
   res.send(data);
  });</code></pre>
  </div>
  </div>
  </p>
  
  <p>I want the callback (content of result or error).
  If anyone can help me on this it would be greatly appreciated.</p>