/fz

A simply http client lib base fetch

Primary LanguageTypeScriptMIT LicenseMIT

fz

NPM version Coverage Status Dependencies Build Status license issues

A simply http client lib base fetch

Install

$ npm install @zcorky/fz

Usage

// typescript
import fz from '@zcorky/fz';

(async () => {
	const json = await fz.post('https://some-api.com', {json: {foo: true}}).json();

	console.log(json);
	//=> `{data: '🦄'}`
})();

API

fz.get(input, [options])

fz.post(input, [options])

fz.put(input, [options])

fz.patch(input, [options])

fz.head(input, [options])

fz.delete(input, [options])

Supported features

  • url parameter is automatically serialized
  • post data submission method is simplified
  • response return processing simplification
  • api timeout support
  • api request cache support
  • support for processing gbk
  • request and response interceptor support like axios
  • unified error handling
  • middleware support
  • cancel request support like axios
  • make http request from node.js

Features

// When 400 BadRequest
Fz.onUnauthorized(async (response, options) => {
	// Do Something
});

// When 401 Unauthorized
Fz.onUnauthorized(async (response, options) => {
	// Do Something
});

// When 403 Forbidden
Fz.onForbidden(async (response, options) => {
	// Do Something
});

// When 404 Not Found
Fz.onNotFound(async (response, options) => {
	//
});

// When 405 Method Not Allowed
Fz.onMethodNotAllowed(async (response, options) => {
	//
});

// When 429 Too Many Requests
Fz.onRateLimited(async (response, options) => {
	//
});

// When 500 Internal Server Error
Fz.onInternalServerError(async (response, options) => {
	//
});
// Apply Global Loading
Fz.enableShowLoading();

Fz.loading(
	async start() {
		XXUI.showLoading();
	},
	async end() {
		XXUI.hideLoading();
	},
);

fz vs umi-request vs fetch vs axios

Features fz umi-request fetch axios
implementation Browser native support Browser native support Browser native support XMLHttpRequest
size 3.4k 9k 4k (polyfill) 14k
query simplification
params simplification
post simplification
timeout
cache
error Check
error Handling
interceptor
prefix
suffix
processing gbk
middleware
cancel request

For more discussion, refer to Traditional Ajax is dead, Fetch eternal life If you have good suggestions and needs, please mention issue

TODO Welcome pr

  • Test case coverage 85%+
  • write a document
  • CI integration
  • release configuration
  • typescript

Relatived

  • ky - Tiny and elegant HTTP client based on the browser Fetch API

License

MIT © Moeover