A simply http client lib base fetch
$ npm install @zcorky/fz
// typescript
import fz from '@zcorky/fz';
(async () => {
const json = await fz.post('https://some-api.com', {json: {foo: true}}).json();
console.log(json);
//=> `{data: '🦄'}`
})();
- 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
// 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();
},
);
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
- Test case coverage 85%+
- write a document
- CI integration
- release configuration
- typescript
- ky - Tiny and elegant HTTP client based on the browser Fetch API
MIT © Moeover