Simple and advanced HTTP client for the browser and node.js
faxios()
.url('http://jsonplaceholder.typicode.com/posts/1/comment')
// smart joining url
.url('http://jsonplaceholder.typicode.com/','posts',1,'comment')
// replacing object keys by values
.url('http://jsonplaceholder.typicode.com/posts/:id/comment')
.url({':id': 1})
// appending url, useful with builders
.url('http://jsonplaceholder.typicode.com')
.url('posts')
.url(1)
.url('comment')
.GET // -> Promise
.then(res => {})
.catch(err => {});
faxios()
.baseURL('http://jsonplaceholder.typicode.com')
.url('/posts/1/comments')
.GET // -> Promise
.then(res => {})
.catch(err => {});
faxios()
.baseURL('http://jsonplaceholder.typicode.com')
.url('posts')
.param('postId', 1)
.header('Authorization', 'your_token')
.GET // => Promise
.then(res => {})
.catch(err => {});
faxios()
.baseURL('http://placeholder.typicode.com')
.url('posts')
.param('postId', 1)
.param({
key1: 'value1',
key2: 'value2',
key3: 'value3'
})
.param(URLSearchParams) // use URLSearchParams instance instead of plain object
.GET // -> Promise
.then(res => {})
.catch(err => {});
faxios()
.baseURL('http://jsonplaceholder.typicode.com')
.url('/posts')
.param('postId', 1)
.data(FormData) // <--- notice this...
.data('key0', 'value0')
.data({
key1: 'value1',
key2: 'value2',
key3: 'value3'
})
.data({
key4: 'value4',
})
.data('key5', 'value5')
.data('hello', [1,2,3]) // hello[] = 1, hello[] = 2, hello[]=3
.POST // => Promise
.then(res => {})
.catch(err => {});
faxios()
.baseURL('http://jsonplaceholder.typicode.com')
.url('posts', 1, 'comments')
// get, post, put, delete, head, options, patch, fetch, request
.method('get')
.FETCH // => Promise
.then(res => {})
.catch(err => {});
// building..
let req = faxios()
.baseURL('http://jsonplaceholder.typicode.com')
.url('posts', 1, 'comments')
// fetching..
req // =>
.FETCH // => Promise
.then(res => {})
.catch(err => {});
// canceling...
req.cancel();
faxios()
.baseURL('http://jsonplaceholder.typicode.com')
.url('posts', 1, 'comments')
.delay(1 * 1000) // delay sending the request 1000 ms
.FETCH // => Promise
.then(res => {})
.catch(err => {});
let fetcher = faxios()
.baseURL('http://jsonplaceholder.typicode.com')
.url('posts', 1, 'comments')
.debounce(1 * 1000) // debounce time 1000ms
fetcher
.FETCH // => Promise
.then(res => console.log('res1:',res))
.catch(err => console.log('error1:', err));
fetcher
.FETCH // => Promise
.then(res => console.log('res2:', res))
.catch(err => console.log('error2:', err));
fetcher
.FETCH // => Promise
.then(res => console.log('res3:',res))
.catch(err => console.log('error3:', err));
fetcher
.FETCH // => Promise
.then(res => console.log('res4:', res))
.catch(err => console.log('error4:', err));
/**
error1:debounced
error2:debounced
error3:debounced
res4:{...}
**/
faxios()
.baseURL('http://jsonplaceholder.typicode.com')
.alias('param', 'id', 'postId') // <-- setting the alias
.id(1)
.FETCH // => Promise
.then(res => {})
.catch(err => {});
let base_builder = fax => fax
.baseURL('http://jsonplaceholder.typicode.com')
.header('Content-Type', 'text/html');
faxios()
.build(base_builder)
.url('/posts')
.FETCH // => Promise
.then(res => {})
.catch(err => {})
faxios.builders.add('buider_name', fax => fax
.baseURL('http://jsonplaceholder.typicode.com')
.header('Content-Type', 'text/html')
);
faxios()
.build('builder_name')
.url('/posts')
.FETCH // => Promise
.then(res => {})
.catch(err => {});
let l = console.log
faxios()
.build(base)
.postId(1)
.data('key1', 'value1')
.onBefore(config => {/* do stuff..*/}) // before sending
.onSuccess(config => {/* do stuff..*/}) // on 200, 201, ..... etc
.onError(config => {/* do stuff..*/}) // only on error
.onComplete(config => {/* do stuff..*/}) // after finishing the request
.onChange(config => {/* do stuff..*/}) // before and after finishing the request
.onInformational((config) => {/* do stuff..*/}) //status matches 1[0-9][0-9]
.onSuccess((config) => {/* do stuff..*/}) // status matches 2[0-9][0-9]
.onRedirectional((config) => {/* do stuff..*/}) // status matches 5[0-9][0-9]
.onClientError((config) => {/* do stuff..*/}) // status matches 4[0-9][0-9]
.onServerError((config) => {/* do stuff..*/}) //status matches 5[0-9][0-9]
.onBadRequest((config) => {/* do stuff..*/}) // status equal to 400
.onUnauthorized((config) => {/* do stuff..*/}) // status equal to 401
.onForbidden((config) => {/* do stuff..*/}) // status equal to 403
.onNotFound((config) => {/* do stuff..*/}) // status equal to 404
.onInternalServerError((config) => {/* do stuff..*/}) // status equal to 500
.onBadGateway((config) => {/* do stuff..*/}) // status equal to 502
.onServiceUnavailable((config) => {/* do stuff..*/}) // status equal to 503
.onGatewayTimeout((config) => {/* do stuff..*/}) // status equal to 504
// or
.on('success', () => {/* do stuff..*/})
.on('Bad Request', () => {/* do stuff...*/})
.on('*status name here, check http statueses*', () => {/* do stuff...*/})
// regex
.on(200, () => console.log('on response status is 200'))
.on(404, () => console.log('on response status is 404'))
.on(/200|400/, () => console.log('on status 200 or 400'))
.on(new RegExp('200|400'), () => console.log('on status 200 or 400'))
.on('2.*', () => console.log('on response status matches the regex 2.*'))
.FETCH
.then(res => {})
.catch(err => {})