对axios的二次封装,结合rnpx项目使用
Promise based HTTP client for the browser and node.js
- 全局请求配置
- 全局请求状态管理
- 添加请求发送拦截器
- 添加请求返回拦截器
- 请求入参格式化
- 接口返回数据做了统一封装
Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | 11 ✔ |
Using npm:
$ npm install rnpx-axios
Using bower:
$ bower install rnpx-axios
Using yarn:
$ yarn add rnpx-axios
Using cdn:
<script src="https://unpkg.com/rnpx/dist/rnpx-axios.min.js"></script>
Performing a GET
request
const rnpxAxios = require('rnpx-axios');
//Initializes the configuration item
rnpxAxios.init();
// Make a request for a user with a given ID
rnpxAxios.get('/user?ID=12345')
.then(function (response) {
// handle success
console.log(response);
})
.catch(function (error) {
// handle error
console.log(error);
})
.finally(function () {
// always executed
});
// Optionally the request above could also be done as
rnpxAxios.get('/user', {
params: {
ID: 12345
}
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
})
.finally(function () {
// always executed
});
// Want to use async/await? Add the `async` keyword to your outer function/method.
async function getUser() {
try {
const response = await rnpxAxios.get('/user?ID=12345');
console.log(response);
} catch (error) {
console.error(error);
}
}
NOTE:
async/await
is part of ECMAScript 2017 and is not supported in Internet Explorer and older browsers, so use with caution.
Performing a POST
request
rnpxAxios.post('/user', {
firstName: 'Fred',
lastName: 'Flintstone'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
Performing multiple concurrent requests
function getUserAccount() {
return rnpxAxios.get('/user/12345');
}
function getUserPermissions() {
return rnpxAxios.get('/user/12345/permissions');
}
axios.all([getUserAccount(), getUserPermissions()])
.then(rnpxAxios.spread(function (acct, perms) {
// Both requests are now complete
}));
Requests can be made by passing the relevant config to axios
.
// Send a POST request
rnpxAxios.ajax({
method: 'post',
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
});
// GET request for remote image
rnpxAxios.ajax({
method: 'get',
url: 'http://bit.ly/2mTM3nY',
responseType: 'stream'
})
.then(function (response) {
response.data.pipe(fs.createWriteStream('ada_lovelace.jpg'))
});