关于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 相关文章推荐
js几个验证函数代码
Mar 25 Javascript
基于jquery实现智能表单验证操作
May 09 Javascript
AngularJS 工作原理详解
Aug 18 Javascript
Laravel中常见的错误与解决方法小结
Aug 30 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
Jun 12 jQuery
基于Vue实现支持按周切换的日历
Sep 24 Javascript
微信小程序实时聊天WebSocket
Jul 05 Javascript
JS+HTML5 canvas绘制验证码示例
Dec 05 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
Sep 05 Javascript
这15个Vue指令,让你的项目开发爽到爆
Oct 11 Javascript
微信小程序实现横向滚动导航栏效果
Dec 12 Javascript
jQuery 动态粒子效果示例代码
Jul 07 jQuery
vscode中使用npm安装babel的方法
Element实现动态表格的示例代码
JavaScript分页组件使用方法详解
webpack的移动端适配方案小结
Jul 25 #Javascript
Vue3.0 手写放大镜效果
ElementUI实现el-form表单重置功能按钮
vue项目多环境配置(.env)的实现
You might like
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
PHP 万年历实现代码
2012/10/18 PHP
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
php函数式编程简单示例
2019/08/08 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
JavaScript驾驭网页-CSS与DOM
2016/03/24 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
VueJs里利用CryptoJs实现加密及解密的方法示例
2019/04/29 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
Python使用Mechanize模块编写爬虫的要点解析
2016/03/31 Python
Python md5与sha1加密算法用法分析
2017/07/14 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
更改Python的pip install 默认安装依赖路径方法详解
2018/10/27 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
tensorflow pb to tflite 精度下降详解
2020/05/25 Python
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
美国眼镜在线零售商:Dualens
2019/12/07 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
考试退步检讨书
2014/01/15 职场文书
会议主持词
2014/03/17 职场文书
迎新晚会策划方案
2014/06/13 职场文书
2014年银行年终工作总结
2014/12/19 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
辩论会主持词
2015/07/03 职场文书