Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

This package has been deprecated

Author message:

This package is no longer maintained and was moved to @akanass/rx-http-request.

rx-http-request

1.2.0 • Public • Published

RX-HTTP-Request

NPM

Build Status Coverage Status Dependencies DevDependencies

The world-famous HTTP client Request now RxJS compliant, wrote in full ES2015 for client and server side.

Table of contents

Super simple to use

RX-HTTP-Request is designed to be the simplest way possible to make http calls.

It's fully ES2015 wrotten so you can import it :

import {RxHttpRequest} from 'rx-http-request';

or use CommonJS:

const RxHttpRequest = require('rx-http-request').RxHttpRequest;

Now, it's easy to perform a HTTP request:

RxHttpRequest.get('http://www.google.fr').subscribe(
    (data) => {
 
        if (data.response.statusCode === 200) {
            console.log(data.body); // Show the HTML for the Google homepage.
        }
    },
    (err) => console.error(err) // Show error in console
);

Browser compatibility

RX-HTTP-Request can be used in your favorite browser to have all features in your own front application.

Just import browser.js script and enjoy:

<script src="node_modules/rx-http-request/browser.js" type="application/javascript"></script>
<script type="application/javascript">
    const RxHttpRequest = rhr.RxHttpRequest;
    
    RxHttpRequest.get('http://www.google.fr').subscribe(
        function(data){
    
            if (data.response.statusCode === 200) {
                console.log(data.body); // Show the HTML for the Google homepage.
            }
        },
        function(err){
            console.error(err) // Show error in console
        }
    );
</script>

API in Detail

RX-HTTP-Request uses Request API to perform calls and returns RxJS.Observable.

All options to pass to API methods can be found here.

All methods to execute on response object can be found here.


.request

Returns the original Request API to perform calls without RxJS.Observable response but with a callback method.

import {RxHttpRequest} from 'rx-http-request';
 
RxHttpRequest.request({uri: 'http://www.google.fr'}, (error, response, body) => {
 
    if (!error && response.statusCode == 200) {
        console.log(body); // Show the HTML for the Google homepage.
    }
});

Back to top

.defaults(options)

This method returns a wrapper around the normal RX-HTTP-Request API that defaults to whatever options you pass to it.

Parameters:

options (required): Original Request options object with default values foreach next requests

Response:

new RxHttpRequest instance

Note: RxHttpRequest.defaults() does not modify the global API; instead, it returns a wrapper that has your default settings applied to it.

Note: You can call .defaults() on the wrapper that is returned from RxHttpRequest.defaults() to add/override defaults that were previously defaulted.

For example:

// requests using baseRequest will set the 'x-token' header
const baseRequest = RxHttpRequest.defaults({
    headers: {'x-token': 'my-token'}
});
 
// requests using specialRequest will include the 'x-token' header set in
// baseRequest and will also include the 'special' header
const specialRequest = baseRequest.defaults({
    headers: {special: 'special value'}
});

Back to top

.get(uri[, options])

Performs a request with get http method.

Parameters:

  • uri (required): The uri where request will be performed
  • options (optional): Original Request options object

Response:

RxJS.Observable instance

Crawl a webpage

import {RxHttpRequest} from 'rx-http-request';
 
RxHttpRequest.get('http://www.google.fr').subscribe(
    (data) => {
 
        if (data.response.statusCode === 200) {
            console.log(data.body); // Show the HTML for the Google homepage.
        }
    },
    (err) => console.error(err) // Show error in console
);

GET something from a JSON REST API

import {RxHttpRequest} from 'rx-http-request';
 
const options = {
    qs: {
        access_token: 'xxxxx xxxxx' // -> uri + '?access_token=xxxxx%20xxxxx'
    },
    headers: {
        'User-Agent': 'RX-HTTP-Request'
    },
    json: true // Automatically parses the JSON string in the response
};
 
RxHttpRequest.get('https://api.github.com/user/repos', options).subscribe(
    (data) => {
 
        if (data.response.statusCode === 200) {
            console.log(data.body); // Show the JSON response object.
        }
    },
    (err) => console.error(err) // Show error in console
);

Back to top

.post(uri[, options])

Performs a request with post http method.

Parameters:

  • uri (required): The uri where request will be performed
  • options (optional): Original Request options object

Response:

RxJS.Observable instance

POST data to a JSON REST API

import {RxHttpRequest} from 'rx-http-request';
 
const options = {
    body: {
        some: 'payload'
    },
    json: true // Automatically stringifies the body to JSON
};
 
RxHttpRequest.post('http://posttestserver.com/posts', options).subscribe(
    (data) => {
 
        if (data.response.statusCode === 201) {
            console.log(data.body); // Show the JSON response object.
        }
    },
    (err) => console.error(err) // Show error in console
);

POST like HTML forms do

import {RxHttpRequest} from 'rx-http-request';
 
const options = {
    form: {
        some: 'payload' // Will be urlencoded
    },
    headers: {
        /* 'content-type': 'application/x-www-form-urlencoded' */ // Set automatically
    }
};
 
RxHttpRequest.post('http://posttestserver.com/posts', options).subscribe(
    (data) => {
 
        if (data.response.statusCode === 201) {
            console.log(data.body); // POST succeeded...
        }
    },
    (err) => console.error(err) // Show error in console
);

Back to top

.put(uri[, options])

Performs a request with put http method.

Parameters:

  • uri (required): The uri where request will be performed
  • options (optional): Original Request options object

Response:

RxJS.Observable instance

import {RxHttpRequest} from 'rx-http-request';
 
RxHttpRequest.put(uri).subscribe(...);

Back to top

.patch(uri[, options])

Performs a request with patch http method.

Parameters:

  • uri (required): The uri where request will be performed
  • options (optional): Original Request options object

Response:

RxJS.Observable instance

import {RxHttpRequest} from 'rx-http-request';
 
RxHttpRequest.patch(uri).subscribe(...);

Back to top

.delete(uri[, options])

Performs a request with delete http method.

Parameters:

  • uri (required): The uri where request will be performed
  • options (optional): Original Request options object

Response:

RxJS.Observable instance

import {RxHttpRequest} from 'rx-http-request';
 
RxHttpRequest.delete(uri).subscribe(...);

Back to top

.head(uri[, options])

Parameters:

  • uri (required): The uri where request will be performed
  • options (optional): Original Request options object

Response:

RxJS.Observable instance

Performs a request with head http method.

import {RxHttpRequest} from 'rx-http-request';
 
RxHttpRequest.head(uri).subscribe(...);

Back to top

Contributing

To set up your development environment:

  1. clone the repo to your workspace,
  2. in the shell cd to the main folder,
  3. hit npm install,
  4. hit npm install gulp -g if you haven't installed gulp globally yet, and
  5. run gulp. (Or run node ./node_modules/.bin/gulp if you don't want to install gulp globally.)

gulp watches all source files and if you save some changes it will lint the code and execute all tests. The test coverage report can be viewed from ./coverage/lcov-report/index.html.

Back to top

Change History

  • v1.2.0 (2016-09-29)
    • New package version for RxJS and Request
    • New ES6 features
    • Issue 1
    • Issue 2
  • v1.1.0 (2016-03-28)
    • Browserify to have browser compatibility
  • v1.0.0 (2016-03-27)
    • Carefully rewritten from scratch to make RX-HTTP-Request a drop-in replacement for Request

Back to top

License

Copyright (c) 2016 Nicolas Jessel Licensed under the MIT license.

Back to top

Install

npm i rx-http-request

DownloadsWeekly Downloads

120

Version

1.2.0

License

MIT

Last publish

Collaborators

  • avatar