mikeal/r2

HTTP client. Spiritual successor to request.

JavaScript

4,400

38 commits

updated Sep 1, 2019

See the code

README

r2

Build Status Coverage Status Greenkeeper badge

Early in Node.js I wrote an HTTP client library called request. It evolved along with Node.js and eventually became very widely depended upon.

A lot has changed since 2010 and I've decided to re-think what a simple HTTP client library should look like.

This new library, r2, is a completely new approach from request.

  • Rather than being built on top of the Node.js Core HTTP library and shimmed for the browser, r2 is built on top of the browser's Fetch API and shimmed for Node.js.
  • APIs are meant to be used with async/await, which means they are based on promises.
const r2 = require('r2')

let html = await r2('https://www.google.com').text

Simple JSON support.

let obj = {ok: true}

let resp = await r2.put('http://localhost/test.json', {json: obj}).json

Simple headers support.

let headers = {'x-test': 'ok'}

let res = await r2('http://localhost/test', {headers}).response

Being written to the Fetch API is a huge benefit for browser users.

When running through browserify request is ~2M uncompressed and ~500K compressed. r2 is only 66K uncompressed and 16K compressed.

mikeal/r2

HTTP client. Spiritual successor to request.

JavaScript

4,400

38 commits

updated Sep 1, 2019

See the code

README

r2

Build Status Coverage Status Greenkeeper badge

Early in Node.js I wrote an HTTP client library called request. It evolved along with Node.js and eventually became very widely depended upon.

A lot has changed since 2010 and I've decided to re-think what a simple HTTP client library should look like.

This new library, r2, is a completely new approach from request.

  • Rather than being built on top of the Node.js Core HTTP library and shimmed for the browser, r2 is built on top of the browser's Fetch API and shimmed for Node.js.
  • APIs are meant to be used with async/await, which means they are based on promises.
const r2 = require('r2')

let html = await r2('https://www.google.com').text

Simple JSON support.

let obj = {ok: true}

let resp = await r2.put('http://localhost/test.json', {json: obj}).json

Simple headers support.

let headers = {'x-test': 'ok'}

let res = await r2('http://localhost/test', {headers}).response

Being written to the Fetch API is a huge benefit for browser users.

When running through browserify request is ~2M uncompressed and ~500K compressed. r2 is only 66K uncompressed and 16K compressed.

Project health

Overall

2.6/10

Maintained

0/10

Code review

4/10
OpenSSF Scorecard

npm

Latest release

2.0.1 · Apr 6, 2018

Releases this year

0

Significant stargazers

(top 24 of 42)

Evan You

111,745 followers · starred Sep 2017

Michaël Zasso

879 followers · starred Sep 2017

Tim Neutkens

6,144 followers · starred Sep 2017

Matthew Phillips

1,128 followers · starred Sep 2017