• Stars
    star
    141
  • Rank 259,971 (Top 6 %)
  • Language
    JavaScript
  • Created over 10 years ago
  • Updated about 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Library to monitor HTTP(S) requests made with mikeal/request.

request-debug Build status npm package

This Node.js module provides an easy way to monitor HTTP(S) requests performed by the request module, and their responses from external servers.

Usage

Basic usage is to require the module and call it, passing in the object returned by require('request'):

var request = require('request');

require('request-debug')(request);

This will set up event handlers on every request performed with the request variable from this point.

You can also specify a function to handle request or response data:

require('request-debug')(request, function(type, data, r) {
    // put your request or response handling logic here
});

If you specify your own handling function, r will be the Request instance that generated the event, and type will be one of the following values:

  • request - Headers were sent to the server and will be included as data.headers. data.body may also be present for POST requests.

  • response - Headers were received from the server and will be included as data.headers. Note that request only buffers the response body if a callback was given, so it will only be available as data.body if the initial call to request included a callback.

  • redirect - A redirect status code (HTTP 3xx) was received. The data object will have properties statusCode, headers, and uri (the address of the next request).

  • auth - A HTTP 401 Unathorized response was received. Internally, request handles this like a redirect, so the same properties will be available on the data object.

You can use the data.debugId parameter to match up requests with their responses and other events.

The default handling function writes the data to stderr in Node's JSON-like object display format. See the example below for more details.

To disable debugging, call request.stopDebugging() (this function only exists if debugging has already been enabled). Any requests that are in progress when stopDebugging() is called will still generate debug events.

Example

var request = require('request');

require('request-debug')(request);

// digest.php is example 2 from:
// http://php.net/manual/en/features.http-auth.php

request({
    uri  : 'http://nylen.tv/digest.php',
    auth : {
        user : 'admin',
        pass : 'mypass',
        sendImmediately : false
    },
    rejectUnauthorized : false,
}, function(err, res, body) {
    console.log('REQUEST RESULTS:', err, res.statusCode, body);
});

Unless you provide your own function as the second parameter to the request-debug call, this will produce console output similar to the following:

{ request:
   { debugId: 1,
     uri: 'http://nylen.tv/digest.php',
     method: 'GET',
     headers: { host: 'nylen.tv' } } }
{ auth:
   { debugId: 1,
     statusCode: 401,
     headers:
      { date: 'Mon, 20 Oct 2014 03:34:58 GMT',
        server: 'Apache/2.4.6 (Debian)',
        'x-powered-by': 'PHP/5.5.6-1',
        'www-authenticate': 'Digest realm="Restricted area",qop="auth",nonce="544482e2556d9",opaque="cdce8a5c95a1427d74df7acbf41c9ce0"',
        'content-length': '39',
        'keep-alive': 'timeout=5, max=100',
        connection: 'Keep-Alive',
        'content-type': 'text/html' },
     uri: 'http://nylen.tv/digest.php' } }
{ request:
   { debugId: 1,
     uri: 'http://nylen.tv/digest.php',
     method: 'GET',
     headers:
      { authorization: 'Digest username="admin", realm="Restricted area", nonce="544482e2556d9", uri="/digest.php", qop=auth, response="e833c7fa52e8d42fae3ca784b96dfd38", nc=00000001, cnonce="ab6ff3dd95a0449e990a6c8465a6bb26", opaque="cdce8a5c95a1427d74df7acbf41c9ce0"',
        host: 'nylen.tv' } } }
{ response:
   { debugId: 1,
     headers:
      { date: 'Mon, 20 Oct 2014 03:34:58 GMT',
        server: 'Apache/2.4.6 (Debian)',
        'x-powered-by': 'PHP/5.5.6-1',
        'content-length': '27',
        'keep-alive': 'timeout=5, max=100',
        connection: 'Keep-Alive',
        'content-type': 'text/html' },
     statusCode: 200,
     body: 'You are logged in as: admin' } }
REQUEST RESULTS: null 200 You are logged in as: admin

Compatibility

Tested with Node.js versions 0.8.x, 0.10.x, and 0.11.x on Travis, and a bunch of different request versions.

Does not work with request versions older than 2.22.0 (July 2013). Tests don't start passing until version 2.28.0 (December 2013).

More Repositories

1

request

🏊🏾 Simplified HTTP request client.
JavaScript
25,672
star
2

request-promise

The simplified HTTP request client 'request' with Promise support. Powered by Bluebird.
JavaScript
4,765
star
3

request-promise-native

The simplified HTTP request client 'request' with Promise support. Powered by native ES6 promises.
JavaScript
1,095
star
4

tunnel-agent

HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.
JavaScript
112
star
5

caseless

Caseless object set/get/has, very useful when working with HTTP headers.
JavaScript
96
star
6

forever-agent

HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.
JavaScript
78
star
7

oauth-sign

OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module.
JavaScript
57
star
8

aws-sign

AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.
JavaScript
28
star
9

request-promise-any

The simplified HTTP request client 'request' with Promise support. Powered by 'any-promise'.
JavaScript
22
star
10

promise-core

Core Promise support implementation for the simplified HTTP request client 'request'.
JavaScript
20
star
11

cookie-jar

Cookie Jar. Originally pulled from LearnBoost/tobi, maintained as vendor in request, now a standalone module.
JavaScript
10
star
12

interface

Common Interface for HTTP Clients
JavaScript
5
star
13

cli

HTTP CLI Client
JavaScript
5
star
14

api

Sugar API for @request/interface consumers
JavaScript
5
star
15

request.js.org

Official Website of the Request Organization
4
star
16

core

HTTP Client Library
JavaScript
3
star
17

digest

HTTP Digest Authentication
JavaScript
2
star
18

http-duplex-gzip-client

HTTP duplex client that accepts and decompresses gzip.
JavaScript
2
star
19

multipart

HTTP Multipart Body Stream
JavaScript
2
star
20

client

HTTP Client Library
JavaScript
1
star
21

headers

HTTP Caseless Headers
JavaScript
1
star
22

log

HTTP Debug Log
JavaScript
1
star
23

legacy

JavaScript
1
star
24

qs

Wrapper for qs and querystring modules
JavaScript
1
star
25

oauth

HTTP OAuth Authentication
JavaScript
1
star
26

length

HTTP Content-Length for various body types
JavaScript
1
star