基于promise的小程序请求库,借鉴axios
Performing a GET
request
// Make a request for a user with a given ID
request.get('/user?ID=12345')
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
// Optionally the request above could also be done as
request.get('/user', {
data: {
ID: 12345
}
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
Performing a POST
request
request.post('/user', {
data:{
firstName: 'Fred',
lastName: 'Flintstone'
})
}
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
Requests can be made by passing the relevant config to request
.
// Send a POST request
request({
method: 'post',
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
});
// Send a GET request (default method)
request('/user/12345');
For convenience aliases have been provided for all supported request methods.
'options', 'get', 'head', 'post', 'put', 'delete', 'trace', 'connect'
request[method](url[,config])
You can create a new instance of request with a custom config.
var instance = request.create({
baseURL: 'https://some-domain.com/api/',
headers: {'X-Custom-Header': 'foobar'}
});
These are the available config options for making requests. Only the url
is required. Requests will default to GET
if method
is not specified.
{
url: String, //required
baseURL: String,
//`method` default get
//support 'options', 'get', 'head', 'post', 'put', 'delete', 'trace', 'connect'
method: String,
data: Object/String/ArrayBuffer,
header: Object,
dataType: String,
responseType: String,
cancelToken: CancelToken
}
request.defaults.baseURL = 'https://api.example.com';
request.defaults.headers.common['Authorization'] = AUTH_TOKEN;
You can limit request concurrency.
//Only modifying the prototype is valid, default 10
request.Request.defaults.concurrency = 10
You can intercept requests or responses before they are handled by then
or catch
.
// Add a request interceptor
request.interceptors.request.use(function (config) {
// Do something before request is sent
return config;
}, function (error) {
// Do something with request error
return Promise.reject(error);
});
// Add a response interceptor
request.interceptors.response.use(function (response) {
// Do something with response data
return response;
}, function (error) {
// Do something with response error
return Promise.reject(error);
});
If you may need to remove an interceptor later you can.
var myInterceptor = request.interceptors.request.use(function () {/*...*/});
request.interceptors.request.eject(myInterceptor);
You can cancel a request using a cancel token.
You can create a cancel token using the CancelToken.source
factory as shown below:
var CancelToken = request.CancelToken;
var source = CancelToken.source();
request.get('/user/12345', {
cancelToken: source.token
}).catch(function(thrown) {
if (request.isCancel(thrown)) {
console.log('Request canceled', thrown.message);
} else {
// handle error
}
});
// cancel the request (the message parameter is optional)
source.cancel('Operation canceled by the user.');
You can also create a cancel token by passing an executor function to the CancelToken
constructor:
var CancelToken = request.CancelToken;
var cancel;
request.get('/user/12345', {
cancelToken: new CancelToken(function executor(c) {
// An executor function receives a cancel function as a parameter
cancel = c;
})
});
// cancel the request
cancel();