关于React Native使用axios进行网络请求的方法


Posted in Javascript onAugust 02, 2021

在前端开发中,能够完成数据请求的方式有很多,如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请求进行一些封装,以方便后期的使用,如下所示。

可以看到,如果直接使用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);

到此这篇关于关于React Native使用axios进行网络请求的方法的文章就介绍到这了,更多相关React Native网络请求内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
Dec 11 Javascript
jquery Mobile入门—外部链接切换示例代码
Jan 08 Javascript
获取客户端网卡MAC地址和IP地址实现JS代码
Mar 17 Javascript
详谈jQuery中的this和$(this)
Nov 13 Javascript
js自定义QQ菜单效果
Jan 10 Javascript
angularjs+bootstrap实现自定义分页的实例代码
Jun 19 Javascript
vue 请求后台数据的实例代码
Jun 22 Javascript
Angular通过angular-cli来搭建web前端项目的方法
Jul 27 Javascript
Vue实现购物车场景下的应用
Nov 27 Javascript
js操作二进制数据方法
Mar 03 Javascript
基于vue实现简易打地鼠游戏
Aug 21 Javascript
浅谈JavaScript浅拷贝和深拷贝
Nov 07 Javascript
vscode中使用npm安装babel的方法
Element实现动态表格的示例代码
JavaScript分页组件使用方法详解
webpack的移动端适配方案小结
Jul 25 #Javascript
Vue3.0 手写放大镜效果
ElementUI实现el-form表单重置功能按钮
vue项目多环境配置(.env)的实现
You might like
第五节 克隆 [5]
2006/10/09 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
2020/04/16 Python
CSS3 calc()会计算属性详解
2018/02/27 HTML / CSS
HTML5表单验证特性(知识点小结)
2020/03/10 HTML / CSS
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
Javascript如何发送一个Ajax请求
2015/01/26 面试题
教师评优的个人自我评价分享
2013/09/19 职场文书
机械工程师的岗位职责
2013/11/17 职场文书
2014年公司迎新年活动方案
2014/02/24 职场文书
优秀会计求职信
2014/07/04 职场文书
办公室领导干部作风整顿个人整改措施
2014/09/17 职场文书
护士求职自荐信
2015/03/25 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
vue3中的组件间通信
2021/03/31 Vue.js
PyQt5实现多张图片显示并滚动
2021/06/11 Python
Java设计模式中的命令模式
2022/04/28 Java/Android