cb-fetch v1.10.0
cb-fetch
A truly cross-browser and forward-compatible library to do asynchronous HTTP requests that follows the callback pattern.
Table of Contents
Installation
npm
npm install --save cb-fetchyarn
yarn add cb-fetchjspm
jspm install cb-fetchbower
bower install --save cb-fetch#masterjsDelivr
<script src="//cdn.jsdelivr.net/combine/npm/@string/isstring/isString.min.js,npm/cb-fetch/index.min.js" type="text/javascript"></script>Features
fetchXMLHttpRequestXDomainRequest- Universal Module Definition
- fluent API
- normalized response
- interceptors
- WebDAV
Importation
Examples
// here's your typical request
request('http://www.example.com?key1=value1&key2=value2')
.done(response => { /* … */ });
// taking a comprehensive approach is encouraged though
request()
.get('http://www.example.com')
.query('key1=value1&key2=value2')
.done(onSuccessCallback, onErrorCallback);
// passing an object offers options not available otherwise
let abort = request({
url: new URL('http://www.example.com'),
parameters: new URLSearchParams('_csrf=TOKEN'),
mode: 'cors',
credentials: 'include',
responseType: 'json',
headers: { 'Content-Type': 'application/json' }
}).get('/segment')
.query({ foo: ['bar', 'qux'] })
.hook('download', e => { /* … */ })
.done({
success: onSuccessCallback,
error: onErrorCallback,
abort: onAbortCallback
});
// forcefully aborts the request
abort();API
Map
(?: Options | Options.url)
=> Object ┬─────────────────○ done
├──────● hookⁿ ───○ done
│ ┌────────┐
├──┤ get │
│ │ head │
│ │ delete │
│ └─┬──────┘
│ ├────────────○ done
│ ├─● hookⁿ ───○ done
│ └─● query ───○ done
│ └─● hookⁿ ─○ done
│ ┌───────┐
└──┤ patch │
│ post │
│ put │
└─┬─────┘
├────────────○ done
├─● hookⁿ ───○ done
└─● send ────○ done
└─● hookⁿ ─○ doneMethod Signatures
HTTP verbs
(Options.url?) => Objectquery
(Options.parameters?) => Objectsend
(Options.body?) => Objecthook
loadstart
('loadstart', () => Boolean | Void) => Object('download', (Object) => Any) => Objectloadend
('loadend', () => Any) => Objectdone
{
(onSuccess?: Function, onError?: Function),
({
success?: Function,
error?: Function,
timeout?: Function,
abort?: Function
})
} => () => Void,
throws: TypeErrorProperties
Request Options
| Property | Default | Value(s) |
|---|---|---|
| body | null | BufferSource, Blob, Document², FormData, String, URLSearchParams, ReadableStream |
| credentials | 'same‑origin' | 'include', 'omit'⁶, 'same-origin' |
| headers | {} | Object, Headers³ |
| method | 'GET' | String |
| mode | 'same‑origin' | 'cors', 'no-cors'¹, 'same-origin' |
| password | null | String |
| parameters | URLSearchParams, Object, String | |
| responseMediaType² | String | |
| responseType | 'text', 'json', 'blob', 'document', 'arraybuffer', 'formdata'¹, 'moz-blob', 'moz-chunked-arraybuffer', 'moz-chunked-text', 'msxml-document' | |
| timeout | 0 | ℕ |
| username | null | String |
| url | location.href | String, URL |
| multipart⁷ | false | Boolean |
| tunneling⁵ | false | Boolean |
| XSLPattern⁴ | false | Boolean |
Progress Event
| Property | Type |
|---|---|
| chunk | String, ArrayBuffer, Blob, Uint8Array, null |
| aggregate | String, ArrayBuffer, Blob, Uint8Array, null |
| loaded | ℕ |
| total | ℕ |
| lengthComputable | Boolean |
Response
| Property | Type |
|---|---|
| body | Object, String, Document, ArrayBuffer, Blob, FormData¹, ReadableStream¹, null |
| headers | Object |
| instance | XMLHttpRequest, XDomainRequest, Response, AnonXMLHttpRequest |
| statusCode | ℕ |
| statusText | String |
| url | String |
¹ fetch only ² XHR only ³ except Gecko 34–43 ⁴ MSXML 3.0 only ⁵ method override ⁶ fetch, Gecko 16+, Presto/2.10.232–2.12.423 ⁷ Gecko 1.7β–22
Gotchas
delete reserved keyword
In pre-ES5 environments, the delete method requires the use of the bracket notation.
Gecko
For the browsers powered by Gecko 1.9.1–20 to have the exposed response headers
populated into the headers property, the following conditions must be met:
Access-Control-Expose-Headersresponse header exposes itselfAccess-Control-Expose-Headersfield value is not*modeset tocors
Trident
XDomainRequest intrinsic limitations
- only support GET and POST methods
- cannot set request headers
- no credentials
- same scheme restriction
- the informational and redirection status code classes are considered errors
- the response's status code and status text are not supplied
- same-origin requests also require the server to respond with an
Access-Control-Allow-Originheader of either*or the exact URL of the requesting document
Platform for Privacy Preferences
Internet Explorer’s default settings restrict the use of 3rd party cookies unless a P3P compact policy
declaration has been included through a custom HTTP response header; hence, the "include" credentials mode cannot be
fully honored if a cookie has been deemed unsatisfactory.
License
6 years ago
7 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago