npm

This package has been deprecated

Author message:

WARNING: This project has been renamed to @http-util/request. Install using @http-util/request instead.

http-chain

0.1.0-alpha.2 • Public • Published





http logo




Chained and declarative HTTP client based on the browser Fetch API

build status npm version npm downloads license

Features

  • ✔︎ Chained and declarative api methods
  • ✔︎ Based on the browser Fetch API
  • ✔︎ Form support
  • ✔︎ Download support

Browser Support

The latest version of Chrome, Firefox, and Safari.

Install

npm i http-chain

Example

import http from 'http-chain'

(async () => {
    const res = await http
      .p('https://cnodejs.org/api/v1')
      .p('topics')
      .q('page', 2)
      .q('tab', 'good')
      .q('limit', 5)
      .get()
    console.log('res', res)
})()

API Preview

API Docs

path(path: string | number)

Add path segment to request url including non-encoded path segment.

Examples
http
  .path('https://cnodejs.org')
  .path('api')
  .path('v1')
  .path('topics')
  .get()

you can also make one path with the slash:

http
  .path('https://cnodejs.org/api/v1/topics')
  .get()


⬆ Back to top

p(path: string | number)

Alias for path().

Examples
http
  .p('https://cnodejs.org')
  .p('api')
  .p('v1')
  .p('topics')
  .get()


⬆ Back to top

query(key: string, value: string | number | boolean | array)

Add query parameter to request url.

Examples
http
  .path('https://cnodejs.org/api/v1')
  .path('topics')
  .query('page', 2)
  .query('tab', 'good')
  .query('limit', 5)
  .get()


⬆ Back to top

q(key: string, value: string | number | boolean | array)

Alias for query().

Examples
http
  .p('https://cnodejs.org/api/v1')
  .p('topics')
  .q('page', 2)
  .q('tab', 'good')
  .q('limit', 5)
  .get()


⬆ Back to top

queryAll(params: object)

Accept object as params.

Examples
http
  .p('https://cnodejs.org/api/v1')
  .p('topics')
  .queryAll({
    'page': 2,
    'tab': 'good',
    'limit': 5
  })
  .get()


⬆ Back to top

header(name: string, value: string | number | boolean)

Add header to request.

Examples
http
  .p('account')
  .p('users')
  .p(userId)
  .p('state')
  .header('Content-Type', 'text/plain')
  .put('LOCKED');

You can also define custom header by this method:

.header('X-TenantId', companyId)


⬆ Back to top

auth(value: string)

Convenience method for setting the "Authorization" header, same with:

.header('Authorization', value)
Examples
.auth('Bearer eyJhbGciOiJIUzI1NiIs')


⬆ Back to top

content(contentType: string)

Set the content type of the body.

Examples
.content('multipart/form-data')


⬆ Back to top

withText()

Convenience method for sending data as plain text, same with:

.content('text/plain')

⬆ Back to top

withJson()

Convenience method for sending data as json, same with:

.content('application/json')

⬆ Back to top

accept(acceptType: string)

Set the Accept header.

Examples
.accept('text/csv')


⬆ Back to top

asText()

Convenience method for getting plain text response, same with:

.accept('text/plain')

⬆ Back to top

asXML()

Convenience method for getting XML response, same with:

.accept('text/plain')

⬆ Back to top

append(name: string, value: string | Blob, fileName?: string)

Append formData params and set the content-type header to multipart/form-data automatically.

Examples
http
  .path('flipper/v0/flip')
  .path('order')
  .append('quotation', file)
  .accept('application/vnd.oasis.ubl+json')
  .post();


⬆ Back to top

formData(data: object)

Convert the javascript object to a FormData and set the content-type header to multipart/form-data automatically.

Examples
const data = {
  pony: true,
  text: 'abc'
}http
  .path('...')
  .formData(data)
  .post()


⬆ Back to top

formUrl(input: object | string)

Convert the input to an url encoded string and set the content-type header to application/x-www-form-urlencoded automatically.

Examples
const input = {
  pony: true,
  tim: { isFat: false }
}
const alreadyEncodedForm = 'pony=true&tim=%7B%22isFat%22%3Afalse%7D'http.path('...').formUrl(form).post()
http.path('...').formUrl(alreadyEncodedForm).post()


⬆ Back to top

send(method: string, body?: any)

Send request.

supported methods: POST, GET, POST, PUT, DELETE, PATCH, etc.

⬆ Back to top

get()

Send GET request, same with:

.send('GET', null)

⬆ Back to top

post(body?: any)

Send POST request, same with:

.send('POST', body)

⬆ Back to top

put(body?: any)

Send PUT request, same with:

.send('PUT', body)

⬆ Back to top

patch(body?: any)

Send PATCH request, same with:

.send('PATCH', body)

⬆ Back to top

head()

Send HEAD request, same with:

.send('HEAD', null)

⬆ Back to top

delete()

Send DELETE request, same with:

.send('DELETE', null)

⬆ Back to top

cache(ttl: number)

Makes this request cache for ttl milliseconds.

⬆ Back to top

clearCache()

Clear the request cache map.

Examples
import { clearCache } from 'http-chain'clearCache()


⬆ Back to top

beforeSend(callback: func)

Callback that gets invoked with string url before sending.

Note: It can only change headers and body of the request.

⬆ Back to top

enrichResponse()

Return a promise for the response (including status code and headers), rather than for just the response data.

Examples
http
  .path(url)
  .enrichResponse()
  .get()


⬆ Back to top

download(fileName?: string)

File will be named by following priority:

  • High: download(fileName).
  • Medium: response headers 'Content-Disposition' filename.
  • Low: string after the last slash of path url.
Examples
// file will be downloaded and named 'prop-types.js'
http
  .p('https://cdn.bootcss.com/prop-types/15.6.1/prop-types.js')
  .download()// file will be downloaded and named 'types.js'
http
  .p('https://cdn.bootcss.com/prop-types/15.6.1/prop-types.js')
  .download('types.js')// you can also download file by chained path style
http
  .p('https://cdn.bootcss.com')
  .p('prop-types')
  .p('15.6.1')
  .p('prop-types.js')
  .download()


⬆ Back to top

options(options: object)

Set Fetch API options, this options method will replace other options you defined.

Examples
http
  .p('...')
  .options({credentials: 'include'})
  .post(body)


⬆ Back to top

Changelog

CHANGELOG

License

MIT © Kimi Gao

Package Sidebar

Install

npm i http-chain

Weekly Downloads

0

Version

0.1.0-alpha.2

License

MIT

Unpacked Size

29.6 kB

Total Files

8

Last publish

Collaborators

  • kimigao