npm

npm’s 2019 JavaScript ecosystem survey analysis is now available!Get your copy here »

@shinin/request

1.0.7 • Public • Published

@shinin/request · GitHub license npm Build Status

@shinin/request is a tiny window.fetch wrapper tried to make HTTP request code more readable and more easy to write.

Before

fetch('/users/1', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json'
    'Authorization': 'JWT this-is-user-token'
  },
  body: JSON.stringify({
    email: 'foo@gmail.com',
    name: 'bar'
  })
}).then(handleResponse, handleError)

After

Request
  .post('/users/1')
  .jwt('this-is-user-token')
  .jsonBody({ email: 'foo@gmail.com', name: 'bar' })
  .then(handleResponse, handleError)

Installation

npm install @shinin/request --save
import Request from '@shinin/request'

As an alternative to using npm, you can use @shinin/request as a <script> tag from a CDN. You will also need Promise polyfill and fetch polyfill for old browsers (Check out compatibility at caniuse/fetch and caniuse/Promises).

<!--
Use promise-polyfill and whatwg-fetch only if you want to support old browsers.
Check out Promise and fetch compatibility at http://caniuse.com.
-->
<script src="https://unpkg.com/promise-polyfill"></script>
<script src="https://unpkg.com/whatwg-fetch"></script>
<script src="https://unpkg.com/@shinin/request/dist/request.min.js"></script>
<script>Request.get('http://...')</script> 

Usage

Send a request

Reqeust.get('/api')
Reqeust.post('/api')
Reqeust.put('/api')
Reqeust.delete('/api')

Set HTTP header

// headers: { foo: 'bar' }
Request.get('/api').header('foo', 'bar')
 
// headers: { Authorization: 'bar' }
Request.get('/api').auth('bar')
 
// headers: { Authorization: 'JWT token' }
Request.get('/api').jwt('token')
 
// headers: { Authorization: 'Bearer token' }
Request.get('/api').bearer('token')
 
// headers: { foo1: 'bar1', Authorization: 'token' }
Request.get('/api')
  .header('foo1', 'bar1')
  .header('foo2', undefined)
  .auth('token')

Set URL parameters

// url: /api/?foo=bar
Request.get('/api').param('foo', 'bar')
 
// url: /api/?foo2=bar2
Request.get('/api').param('foo1', undefined).param('foo2', 'bar2')
 
// url: /api/?foo1=bar1&foo2=bar2
Request.get('/api').params({ foo1: 'bar1', foo2: 'bar2' })

Set request body

Request.post('/api').body('content')
 
// Content-Type: application/json
Request.post('/api').jsonBody({ foo: 'bar' })
 
// Content-Type: multipart/form-data
Request.post('/api').formBody({ foo: 'bar' })
 
// Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Request.post('/api').urlencodedFormBody({ foo: 'bar' })

Handle JSON response

Request.get('/api').acceptJson()

Browser Support

  • Chrome
  • Firefox
  • Safari 6.1+
  • IE 10+

License

MIT

install

npm i @shinin/request

Downloadsweekly downloads

8

version

1.0.7

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability