在前端开发中,能够完成数据请求的方式有很多,如Ajax、jQuery ajax、axios和fetch等。不过,随着技术的发展,现在能够看到的基本上也就axios和fetch两种。
axios是一个基于Promise的Http网络库,可运行在浏览器端和Node.js中,Vue应用的网络请求基本都是使用它完成的。axios有很多优秀的特性,如支持请求的拦截和响应、取消请求、JSON自动转换、客户端防御XSRF等。
使用axios之前,需要先在项目中安装axios插件,安装命令如下。
//npm
npm install axios --save
//yarn
yarn add react-native-axios
作为一款优秀的网络请求库,axios支持基本的GET、POST、DELET和PUT等请求。比如,使用axios进行GET请求时就可以使用axios.get()方法和使用axios(config { ... })两种方式,如下所示。
axios.get('/getData', {
params: {
id: 123
}
}).then(function (response) {
console.log(response);
})
axios({
method: 'GET',
url: '/getData',
params: {
id: 123,
}
}).then(function (response) {
console.log(response);
});
可以看到,如果直接使用axios进行网络请求会产生大量的冗余代码,所以在实际开发过程中,还需要对axios请求进行一些封装,以方便后期的使用,如下所示。
const request = axios.create({
transformResponse: [
function (data) {
return data;
},
],
});
const defaultOptions = { //处理默认配置
url: '',
userAgent: 'BIZSTREAM Library',
authentication: {
integration: {
access_token: undefined,
},
},
};
class Bizstream {
init(options) {
this.configuration = {...defaultOptions, ...options};
this.base_url = this.configuration.url;
this.root_path = '';
}
post(path, params, data, type = ADMIN_TYPE) {
return this.send(path, 'POST', params, data, type);
}
get(path, params, data, type = ADMIN_TYPE) {
return this.send(path, 'GET', params, data, type);
}
send(path, method, params, data, type, headersOption) {
const url = `${this.base_url}${this.root_path}${path}`;
const headers = {
'User-Agent': this.configuration.userAgent,
'Content-Type': 'application/json',
...headersOption,
};
return new Promise((resolve, reject) => {
request({url, method, headers, params, data}).then(response => {
…. //处理返回结果
});
});
}
}
export const bizStream = new Bizstream();
经过封装处理后,进行网络请求的时候就方便了许多,并且对于一些通用的返回结果我们也在网络层进行了处理。实际使用时,开发者只需要按照要求传入需要的参数,然后再通过异步函数处理返回的结果即可,如下所示。
//GET请求
const hotMovie='';
const data = await apiRequest.get(hotMovie);
//POST请求
let baseUrl = '';
let param = {
pageNumber: 0,
cityCd: 31,
};
const data = await apiRequest.post(baseUrl, param);
本文主要介绍了flex布局实现无缝滚动的示例代码,分享给大家,具体如下: 案例的...
引子 大家可能不知道,鄙人之前人送外号“过度设计”。作为一个自信的研发人员,...
做个好重构真的挺不容易的,无论是从专业角度还是从生活角度,缺一不可,保持一...
前言:最近做了一个用canvas合成海报图片的移动端项目,由于一点canvas基础都没...
文件处理-本地文件加载 我们在使用electron时,有时会涉及一些文件的处理,比如...
复制代码 代码如下: style type="text/css" div.ui_infor p {font-size: 16px;} ...
有不少人都看过这本书:《Grow as a graphic designer》,我自己也看过原版的PDF...
都说现在新顶级 域名 的行情不行,所以新顶级的投资者们都不愿意出货,但是有一...
随着互联网的发展,信息安全的重要性日渐凸显,小到以假乱真的钓鱼网站,大到各...
资源合并与压缩两个目的 减少http请求数量 减少请求资源的大小 google首页案例学...