- Notifications
You must be signed in to change notification settings - Fork14
The world-famous HTTP client Request now RxJS compliant, wrote in full Typescript | ES6 for client and server side.
License
akanass/rx-http-request
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
The world-famous HTTP clientRequest nowRxJS compliant, wrote in fullTypescript |ES6 for client and server side.
- Rx-Http-Request
- Table of contents
- Installation
- Super simple to use
- Browser compatibility
- Build your project with Webpack
- API in Detail
- Contributing
- Change History
- License
$ npm install --save @akanass/rx-http-request rxjsor$ yarn add @akanass/rx-http-request rxjs
Rx-Http-Request is designed to be the simplest way possible to make http calls.
It's fullyTypescript
|ES6
wrotten so you can import it :
import{RxHR}from"@akanass/rx-http-request";
or useCommonJS
:
constRxHR=require('@akanass/rx-http-request').RxHR;
Now, it's easy to perform aHTTP
request:
RxHR.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);
Rx-Http-Request can be used in your favorite browser to have all features in your own front application.
Just importbrowser/index.js
script and enjoy:
<scriptsrc="node_modules/@akanass/rx-http-request/browser/index.js"type="application/javascript"></script><scripttype="application/javascript">constRxHR=rhr.RxHR;RxHR.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>
Browser version is astandalone version so you just need tocopy/paste
file fromnode_modules/@akanass/rx-http-request/browser/index.js
when you want to create your bundle and change path to it.
If you want to include this library inside a project builds withwebpack
for aclient
application, you must add this configuration inside yourwebpack configuration
:
{target:"web",node:{fs:"empty",net:"empty",tls:"empty"}}
For aserver
application,target
will benode
,node
block in configurationdoesn't exist anduglify
plugin must bedisabled
.
Rx-Http-Request usesRequestAPI to perform calls and returnsRxJS.Observable.
Alloptions to pass toAPImethods can be foundhere.
Allmethods to execute onresponse object can be foundhere.
Returns the originalRequestAPI to perform calls withoutRxJS.Observable
response but with acallback method.
import{RxHR}from'@akanass/rx-http-request';RxHR.request({uri:'http://www.google.fr'},(error,response,body)=>{if(!error&&response.statusCode==200){console.log(body);// Show the HTML for the Google homepage.}});
This methodreturns a wrapper around the normalRx-Http-Request API that defaults to whatever options you pass to it.
Parameters:
options(required): OriginalRequest
options
object with default values foreach next requests
Response:
new
RxHttpRequest
instance
Note:RxHR.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 fromRxHR.defaults()
to add/override defaults that were previously defaulted.
For example:
// requests using baseRequest will set the 'x-token' headerconstbaseRequest=RxHR.defaults({headers:{'x-token':'my-token'}});// requests using specialRequest will include the 'x-token' header set in// baseRequest and will also include the 'special' headerconstspecialRequest=baseRequest.defaults({headers:{special:'special value'}});
Performs a request withget
http method.
Parameters:
- uri(required): The
uri
where request will be performed- options(optional): OriginalRequest
options
object
Response:
RxJS.Observable instance
import{RxHR}from'@akanass/rx-http-request';RxHR.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);
import{RxHR}from'@akanass/rx-http-request';constoptions={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};RxHR.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);
Performs a request withget
http method and returns abuffer in response body. Very useful to crawl data from astream.
Parameters:
- uri(required): The
uri
where request will be performed- options(optional): OriginalRequest
options
object
Response:
RxJS.Observable instance
import{RxHR}from'@akanass/rx-http-request';RxHR.getBuffer('https://portalstoragewuprod2.azureedge.net/vision/Analysis/1-1.jpg').subscribe((data)=>{if(data.response.statusCode===200){console.log(data.response.headers['content-type']);// Show image content-type.console.log(data.body);// Show image buffer array.}},(err)=>console.error(err)// Show error in console);
Performs a request withpost
http method.
Parameters:
- uri(required): The
uri
where request will be performed- options(optional): OriginalRequest
options
object
Response:
RxJS.Observable instance
import{RxHR}from'@akanass/rx-http-request';constoptions={body:{some:'payload'},json:true// Automatically stringifies the body to JSON};RxHR.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);
import{RxHR}from'@akanass/rx-http-request';constoptions={form:{some:'payload'// Will be urlencoded},headers:{/* 'content-type': 'application/x-www-form-urlencoded' */// Set automatically}};RxHR.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);
Performs a request withput
http method.
Parameters:
- uri(required): The
uri
where request will be performed- options(optional): OriginalRequest
options
object
Response:
RxJS.Observable instance
import{RxHR}from'@akanass/rx-http-request';RxHR.put(uri).subscribe(...);
Performs a request withpatch
http method.
Parameters:
- uri(required): The
uri
where request will be performed- options(optional): OriginalRequest
options
object
Response:
RxJS.Observable instance
import{RxHR}from'@akanass/rx-http-request';RxHR.patch(uri).subscribe(...);
Performs a request withdelete
http method.
Parameters:
- uri(required): The
uri
where request will be performed- options(optional): OriginalRequest
options
object
Response:
RxJS.Observable instance
import{RxHR}from'@akanass/rx-http-request';RxHR.delete(uri).subscribe(...);
Parameters:
- uri(required): The
uri
where request will be performed- options(optional): OriginalRequest
options
object
Response:
RxJS.Observable instance
Performs a request withhead
http method.
import{RxHR}from'@akanass/rx-http-request';RxHR.head(uri).subscribe(...);
Parameters:
- uri(required): The
uri
where request will be performed- options(optional): OriginalRequest
options
object
Response:
RxJS.Observable instance
Performs a request withoptions
http method.
import{RxHR}from'@akanass/rx-http-request';RxHR.options(uri).subscribe(...);
Creates a newRxCookieJar
instance
Response:
RxJS.Observable instance
import{RxHR}from'@akanass/rx-http-request';RxHR.jar().subscribe(...);
Creates a new cookie
Parameters:
- str(required): The
string
representation of the cookie
Response:
RxJS.Observable instance
import{RxHR}from'@akanass/rx-http-request';RxHR.cookie('key1=value1').subscribe(...);
To set up your development environment:
- clone the repo to your workspace,
- in the shell
cd
to the main folder, - hit
npm or yarn install
, - run
npm or yarn run test
.- It will lint the code and execute all tests.
- The test coverage report can be viewed from
./coverage/lcov-report/index.html
.
- v3.3.0 (2019-07-15)
- MergePR #30
- Upgrade all packages' versions
- Documentation
- v3.2.0 (2019-07-08)
- Upgrade all packages' versions
- Fix tests
- Documentation
- v3.1.0 (2018-10-16)
- v3.0.0 (2018-05-28)
- v2.7.1 (2018-01-24)
- Upgrade all packages' versions
- Fix problem with response object with retry process
- Documentation
- v2.7.0 (2017-11-20)
- v2.6.0 (2017-09-14)
- Upgrade all packages' versions
- Add config for
unused
packages error in compilation - Update code to use
rxjs
operators instead of manual creation - Update tests
- v2.5.0 (2017-07-18)
- Upgrade all packages' versions
- FixIssue 11
rxjs
inpeerDependencies and need to be installed manually
- v2.4.0 (2017-07-10)
- Upgrade all packages' versions
- Change
no-shadowed-variable
value intslint
config
- v2.3.0 (2017-05-15)
- Upgrade all packages' versions
- Extended
tsconfig
files - Check file exists in packaging process
- v2.2.1 (2017-05-02)
- Upgrade all packages' versions
- Fix error handler in
getBuffer
method if nouri
provided
- v2.2.0 (2017-04-14)
- Upgrade all packages' versions
- Fix tests
- Add new method to get data with buffer response
- Export all initial elements from request to have them in library
- v2.1.1 (2017-03-23)
- Upgrade all packages' versions
- Fix
request typings
installation
- v2.1.0 (2017-03-09)
- Upgrade
Request
version tov2.80.0
- Upgrade
- v2.0.0 (2017-02-28)
- New package version for
RxJS
andRequest
- Don't import all of
RxJS
, onlyObservable
- Rewritten alllibrary and test files in
Typescript
- Add
typings
support - Addscope to library and move to
@akanass/rx-http-request
- New package version for
- v1.2.0 (2016-09-29)
- 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
Copyright (c) 2019Nicolas Jessel Licensed under theMIT license.
About
The world-famous HTTP client Request now RxJS compliant, wrote in full Typescript | ES6 for client and server side.