Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    requestahpublic

    requestah

    lean HTTP wrapper for node.js that makes unit testing your HTTP API's a bit less rough.

    Installation

    npm install requestah
    

    Basic Usage

    var r = require('requestah')(80); // Set the port for future requests
    
    // Basic HTTP GET:
    r.get('/users', function(res) {
    	if (res.statusCode === 200) { console.log(res.body); }
    });
    
    // HTTP POST with data:
    r.post('/users', {name: "John Doe"}, function(res) {
    	if (res.statusCode === 200) { console.log(res.body); }
    });
    
    // External HTTP GET:
    r.get('http://www.example.org', function(res) {
        if (res.statusCode === 302) { console.log("We got redirected to " + res.headers.location); }
    });
    

    Advanced usage

    // HTTP GET with querystrings passed as object
    r.get('/users', {ageMin: 30, ageMax: 50} function(res, dbg) {
    	if (res.statusCode === 200) { console.log(res.body); }
    });
    
    // HTTP GET with querystrings passed in path - performs exactly the same request as above would do
    r.get('/users?ageMin=30&ageMax=50', function(res, dbg) {
    	if (res.statusCode === 200) { console.log(res.body); }
    });
    
    // HTTP DELETE with a header for only this request
    r.del('/users/john', {headers: {apikey: "verySecretKey"}}, function(res) {
    	if (res.statusCode === 204) { console.log(res.body); }
    });
    
    // Set a fixed HTTP header for all future requests. Helpful for authentication 
    r.setHeader('apikey', 'b4080ca70d5617...');
    
    // HTTP PUT with data & headers:
    r.put('/users/john', {name: "Jane Doe", headers: {adminkey: "IGOTADMINRIGHTS"}}, function(res, req) {
    
    	if (res.statusCode === 204) { console.log(res.body); }
    	console.log(req.params); // => params: {name: "Jane Doe"}
    	
    	// Note that both the above set apikey and the per-request adminkey have been sent in the request:
    	console.log(req.headers); // => headers: {apikey: 'b4080ca70d5617...', adminkey: 'IGOTADMINRIGHTS'}
    });
    
    
    // HTTP POST with enforced Content-Type:
    r.post('/users', {name: "John Doe", type: "form"}, function(res, req) {
    	console.log(req['Content-Type']); // => 'application/json'
    });
    
    // Activate debug mode - future requests will not be performed. Only request options are returned:
    r.setDebug(true);
    
    // Check out the available debug information
    r.post('/users', {name: "John Doe", type: "form"}, function(res, req) {
    	
    	console.log(res); // res => false
    	
    	console.log(req); 
    	/*
         req => {
    	    port: 80,
    	    method: 'POST',
    	    path: '/users',
    	    headers: {apikey: 'b4080ca70d5617...', adminkey: 'IGOTADMINRIGHTS'},
    	    'Content-Type': 'application/json'
    	    params: {name: "John doe"},
    	    parsedParams: '{"name": "John Doe"}',
         }
     	*/
    	    
    });
    

    API

    requestah.

    • get(path, data, callback)

    • post(path, data, callback)

    • put(path, data, callback)

    • del(path, data, callback)

      • path - [REQUIRED] - The URL to fetch. Can be either relative to root, ie. /users or but also an full path, http://www.google.com
      • data - [OPTIONAL] - The data to be sent along with the request. Is appended automatically as a querystring to the path for HTTP GET requests, or converted into JSON automatically for POST/PUT/DELETE.
        • headers - [OPTIONAL] - The eventual headers to send along with the requests. Does overwrite any previously set fixed headers
        • type - [OPTIONAL] - A way to force content-type -encoding of the request to be either form application/x-www-form-urlencoded, or json (application/json)
      • callback - [REQUIRED] - The callback to be fired once the request is complete. Returns two arguments: response & request
        • response - The actual node response object. False if in debug mode. Please visit the [official node.js documentation] for full documentation : http://nodejs.org/api/http.html#http_class_http_serverrequest
        • request - The arguments used to create the request. Useful for debugging and the only argument returned if in debug mode.
    • setFixedHeader(key, value) - Sets a fixed header to be included with all future requests. Useful to set HTTP Auth headers.

    • setDebug(bool) - Activates debugging, which means that no actual HTTP requests will be perfomed. Watch the second argument (request) in the callbacks for detailed debug information.

    Checkout the tests in test/test-main.js for actual examples and usecases.

    License

    See LICENSE file.

    Copyright (c) 2012 Joakim B

    Keywords

    none

    install

    npm i requestah

    Downloadslast 7 days

    0

    version

    1.0.0

    license

    none

    repository

    github.com

    last publish

    collaborators

    • avatar