UNPKG

@cycjimmy/mini-xhr

Version:

A very lightweight javascript library for HTTP requests.

175 lines (146 loc) 6.41 kB
# Mini XHR ![][workflows-badge-image] [![libraries dependency status][libraries-status-image]][libraries-status-url] [![libraries sourcerank][libraries-sourcerank-image]][libraries-sourcerank-url] [![Coverage Status][coverage-image]][coverage-url] [![Release date][release-date-image]][release-url] [![rollup][rollup-image]][rollup-url] [![semantic-release][semantic-image]][semantic-url] [![jest][jest-image]][jest-url] [![npm license][license-image]][download-url] A very lightweight javascript library for HTTP requests. Language: [En][Readme-url-En] | [中文][Readme-url-ZhCN] *** ## Install [![NPM version][npm-image]][npm-url] [![NPM bundle size][npm-bundle-size-image]][npm-url] [![npm download][download-image]][download-url] ```shell # via npm $ npm install @cycjimmy/mini-xhr --save # or via yarn $ yarn add @cycjimmy/mini-xhr ``` ## Usage ```javascript import miniXhr from '@cycjimmy/mini-xhr'; # OR const miniXhr = require('@cycjimmy/mini-xhr'); miniXhr.get(url [, settings]) .then((data) => { // handle data }) .catch((err) => { // handle error }); ``` ### miniXhr supports the following methods: #### `miniXhr.get(url, [,settings])` * `url`: [Require][String] The server URL that will be used for the request. * The `settings` supports: [Option][Object] * `params`: [Option][Object] The key-value pair for the URL parameters to be sent with the request. Default `{}`. * `responseType`: [Option][String] The type of data that the server will respond with. Choose one of the options: * `'arraybuffer'` * `'document'` * `'json'`(default) * `'text'` * `'stream'` * `'blob'` * `headers`: [Option][Object] The key-value pair that custom headers to be sent. Default `{}`. * `contentType`: [Option][String] Content type. Default `'application/json; charset=UTF-8'`. * `timeout`: [Option][Number] The number of milliseconds before the request times out. A value of 0 means there will be no timeout. Default `0`. * `timeoutCB`: [Option][Function] The time-out callback function. Default `null`. #### `miniXhr.post(url, [,settings])` * `url`: [Require][String] The server URL that will be used for the request. * The `settings` supports: [Option][Object] * `params`: [Option][Object] The key-value pair for the URL parameters to be sent with the request. Default `{}`. * `data`: [Option][Object|FormData|String] The data to be sent as the request body. Default `{}`. * `dataType`: [Option][String] The type of the data to be sent as the request body. Choose one of the options: * `'json'`(default) * `'formData'` * `'text'` * `responseType`: [Option][String] The type of data that the server will respond with. Choose one of the options: * `'arraybuffer'` * `'document'` * `'json'`(default) * `'text'` * `'stream'` * `'blob'` * `headers`: [Option][Object] The key-value pair that custom headers to be sent. Default `{}`. * `contentType`: [Option][String] Content type. Default `'application/json; charset=UTF-8'`. * `timeout`: [Option][Number] The number of milliseconds before the request times out. A value of 0 means there will be no timeout. Default `0`. * `timeoutCB`: [Option][Function] The time-out callback function. Default `null`. #### `miniXhr.jsonp(url, [,settings])` * `url`: [Require][String] The server URL that will be used for the request. * The `settings` supports: [Option][Object] * `params`: [Option][Object] The key-value pair for the URL parameters to be sent with the request. Default `{}`. * `timeout`: [Option][Number] The number of milliseconds before the request times out. A value of 0 means there will be no timeout. Default `5000`. #### Handling Errors ##### GET or POST ```javascript miniXhr.get('/getData') .then((data) => { // data handle }) .catch((err) => { console.log(err.statusText); // the text of the response status console.log(err.status); // the numerical HTTP status code }); ``` ##### JSONP ```javascript miniXhr.jsonp('/getData') .then((data) => { // data handle }) .catch((err) => { console.log(err); // return 'error' or 'timeout' }); ``` ### Use in browser: E.g. ```html <script src="mini-xhr.umd.min.js"></script> <script> miniXhr.jsonp('/getData', { params: { key1: 'value1', key2: 'value2', } }) .then(function(data) { // data handle }); </script> ``` ## CDN [![jsdelivr][jsdelivr-image]][jsdelivr-url] To use via a CDN include this in your html: ```text <script src="https://cdn.jsdelivr.net/npm/@cycjimmy/mini-xhr@7/dist/mini-xhr.umd.min.js"></script> ``` <!-- Links: --> [npm-image]: https://img.shields.io/npm/v/@cycjimmy/mini-xhr [npm-url]: https://npmjs.org/package/@cycjimmy/mini-xhr [npm-bundle-size-image]: https://img.shields.io/bundlephobia/min/@cycjimmy/mini-xhr [download-image]: https://img.shields.io/npm/dt/@cycjimmy/mini-xhr [download-url]: https://npmjs.org/package/@cycjimmy/mini-xhr [jsdelivr-image]: https://img.shields.io/jsdelivr/npm/hy/@cycjimmy/mini-xhr [jsdelivr-url]: https://www.jsdelivr.com/package/npm/@cycjimmy/mini-xhr [workflows-badge-image]: https://github.com/cycjimmy/mini-xhr/workflows/Test%20CI/badge.svg [libraries-status-image]: https://img.shields.io/librariesio/release/npm/@cycjimmy/mini-xhr [libraries-sourcerank-image]: https://img.shields.io/librariesio/sourcerank/npm/@cycjimmy/mini-xhr [libraries-status-url]: https://libraries.io/github/cycjimmy/mini-xhr [libraries-sourcerank-url]: https://libraries.io/npm/@cycjimmy%2Fmini-xhr [coverage-image]: https://img.shields.io/coveralls/github/cycjimmy/mini-xhr [coverage-url]: https://coveralls.io/github/cycjimmy/mini-xhr [release-date-image]: https://img.shields.io/github/release-date/cycjimmy/mini-xhr [release-url]: https://github.com/cycjimmy/mini-xhr/releases [rollup-image]: https://img.shields.io/github/package-json/dependency-version/cycjimmy/mini-xhr/dev/rollup [rollup-url]: https://github.com/rollup/rollup [semantic-image]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg [semantic-url]: https://github.com/semantic-release/semantic-release [jest-image]: https://img.shields.io/badge/tested_with-jest-99424f.svg [jest-url]: https://github.com/facebook/jest [license-image]: https://img.shields.io/npm/l/@cycjimmy/mini-xhr [Readme-url-En]: ./README.md [Readme-url-ZhCN]: ./README_zhCN.md