tinyjx
tinyjx is a tiny http client for browser.
Summary
- Tree shaking friendly
- Error tracking friendly
- Small file size (with tree shaking only 5kb minified and 2kb gzip)
- Xhr pool
- Types supported
- IE 10+
Install
$ npm i -P tinyjx
Usage
import { ajax } from 'tinyjx';
ajax({
url: 'http://127.0.0.1/test',
method: 'post',
data: {
hello: world
},
success(data, xhr, event) {
console.log(data);
},
complete(xhr, status) {
console.log(status);
}
})
API
ajax(options: AjaxOptions): Abortable
Returns a Abortable object which implemented a abort() method like xhr.abort().
AjaxOptions: Object
url:<string>, URL to requestmethod:<string>, HTTP method, case insensitive, default"GET", onlyGET,HEAD,POST,PUT,PATCH,DELETE,OPTIONSsupported.data:<any>, request data, used byPOST,PUT,PATCHcontentType:<string>, MIME type for request body, also support predefined valuejson,form,html,xml,text, which areapplication/json,application/x-www-form-urlencoded,text/html,application/xml,text/plain, defaultjsondataType:<string>, MIME type expect from the remote server, will be treat asAccept, defaultjsonprocessData:<boolean>, like jQuery, default istrueheaders: request headers, which is a key-value object. eg.{'Content-Type': 'text/plain'}mimeType: specifies the parameters ofxhr.overrideMimeType()username: user name to use for authenticationpassword: password to use for authenticationevents: events of XMLHttpRequest, except ofonerrorandonreadystatechange, which will be overriden by tinyjx. eg.{ onprogress(e) {}, onload(e) {} }uploadEvents: events of XMLHttpRequestUploadcache: allow browser to cache responses, defaulttrueresponseType: specifies thexhr.responseTypetimeout: specifies thexhr.timeoutwithCredentials: specifies thexhr.withCredentialsbeforeSend(xhr, options):<Function>, before the request is sent.optionsisAjaxOptions. Returnfalsewill cancel the requestsuccess(respData, xhr, event):<Function>, when request succeedsrecoverableError(err, respData, xhr, event):<Function>, when request error occurred, such as response status is 404, 500, which means browser received the response, but an error occurred from remote serverunrecoverableError(err, xhr, event):<Function>, different fromrecoverableError, which means request is failed or browser didn't receive any response, such as cross origin error or network errorcomplete(xhr, status):<Function>, aftersuccess()orerror(), note ifsuccess()orerror()throws an error,complete()will not be calledontimeout(event):<Function>, similar withxhr.ontimeout, butthisis nullserialize:<Function>, specifies a serialize method for this request, returns an object which containsurlanddata.optionscontains:data: raw data(data) inAjaxOptionsurl:<string>, request URLmethod:<string>, HTTP method of requestcontentType:<string>, MIME type ofdatacache:<boolean>,cacheinAjaxOptions, allow browser to cache response
ajax({ url: 'http://127.0.0.1:8080/ajax', data: { a: 1, b: 2 }, serialize({data, method, contentType, url, cache}) { url += '?' + Object.keys(data).map(k => `${encodeURIComponent(k)}=${encodeURIComponent(data[k])}`).join('&'); return { url, data: { hello: 'world' } }; } }); // The request URL will be http://127.0.0.1:8080/ajax?a=1&b=2 // with body {"hello": "world"}deserialize:<Function>, specifies a deserialize method for all responses, returns anything what you want which will be thedataofsuccesscallback.optionscontains:data: raw data in response, may bexhr.responseXML,xhr.responseorxhr.responseTextcontentType:Content-Typeheader of responseacceptType:Acceptof request
ajax({ url: 'http://127.0.0.1:8080/ajax', deserialize({data, contentType, acceptType}) { console.log(data); // {"hello": "world"} console.log(contentType); console.log(acceptType); return 'data changed'; }, success(data, xhr, e) { console.log(data); // data changed } });
jsonp(options: JsonpOptions): void
Returns undefined.
JsonpOptions: Object
url: URL to requestcache:<boolean>, allow browser to cache responses, defaultfalsecrossorigin:crossoriginattribute of<script>, default isn't setcallbackName:<string>, custom callback name, defaultjsonp${randomId}beforeSend(url, options):<Function>, before the request is sent.optionsisJsonpOptions. Returnfalsewill cancel the requestsuccess(args):<Function>, when request succeedserror(err, event):<Function>, when error occurredcomplete(status):<Function>, aftersuccess()orerror(), note ifsuccess()orerror()throws an error,complete()will not be called
config(options: ConfigOptions): void
Returns undefined.
ConfigOptions: Object
pool:<number> | <boolean>, specifies the size of xhr pool, defaultfalse, will not use xhr pool. Iftrue, default size is 5serialize(options):<Function>, specifies a serialize method for all requests, returns an object which containsurlanddata.optionscontains:data: raw data inAjaxOptionsurl:<string>, request URLmethod:<string>, HTTP method of requestcontentType:<string>, MIME type ofdatacache:<boolean>,cacheinAjaxOptions, allow browser to cache responses
deserialize(options):<Function>, specifies a deserialize method for all responses, returns anything what you want which will be thedataofsuccesscallback.optionscontains:data: raw data in response, may bexhr.responseXML,xhr.responseorxhr.responseTextcontentType:Content-Typeheader of responseacceptType:Acceptof request
get(url: string, options: AjaxOptions): Abortable
A GET request wrapper of ajax().
head(url: string, options: AjaxOptions): Abortable
A HEAD request wrapper of ajax().
post(url: string, data: any, options: AjaxOptions): Abortable
A POST request wrapper of ajax().
put(url: string, data: any, options: AjaxOptions): Abortable
A PUT request wrapper of ajax().
patch(url: string, data: any, options: AjaxOptions): Abortable
A PATCH request wrapper of ajax().
del(url: string, data: any, options: AjaxOptions): Abortable
A DELETE request wrapper of ajax().
options(url: string, data: any, options: AjaxOptions): Abortable
A OPTIONS request wrapper of ajax().
TODO
- More test
License
Licensed under the MIT License.