关于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实现固定顶部导航效果(仿蘑菇街)
Mar 21 Javascript
复选框全选与全不选操作实现思路
Aug 18 Javascript
jQuery动画效果-slideUp slideDown上下滑动示例代码
Aug 28 Javascript
用js传递value默认值的示例代码
Sep 11 Javascript
jQuery往textarea中光标所在位置插入文本的方法
Jun 26 Javascript
angular实现表单验证及提交功能
Feb 01 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
Aug 30 Javascript
React通过redux-persist持久化数据存储的方法示例
Feb 14 Javascript
微信小程序动态添加view组件的实例代码
May 23 Javascript
laravel-admin 与 vue 结合使用实例代码详解
Jun 04 Javascript
js实现时钟定时器
Mar 26 Javascript
vue npm install 安装某个指定的版本操作
Aug 11 Javascript
vscode中使用npm安装babel的方法
Element实现动态表格的示例代码
JavaScript分页组件使用方法详解
webpack的移动端适配方案小结
Jul 25 #Javascript
Vue3.0 手写放大镜效果
ElementUI实现el-form表单重置功能按钮
vue项目多环境配置(.env)的实现
You might like
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
php实现分页工具类分享
2014/01/09 PHP
Mac环境下php操作mysql数据库的方法分享
2015/05/11 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
JavaScript实现MIPS乘法模拟的方法
2015/04/17 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
2015/09/27 Javascript
三个js循环的关键字示例(for与while)
2016/02/16 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
2016/02/25 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
axios 封装上传文件的请求方法
2018/09/26 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
python批量同步web服务器代码核心程序
2014/09/01 Python
玩转python爬虫之正则表达式
2016/02/17 Python
Django实现自定义404,500页面教程
2017/03/26 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
python内存动态分配过程详解
2019/07/15 Python
python关于矩阵重复赋值覆盖问题的解决方法
2019/07/19 Python
解决python 上传图片限制格式问题
2019/10/30 Python
Python如何telnet到网络设备
2021/02/18 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
历史专业毕业生的自我鉴定
2013/11/15 职场文书
电子专业毕业生自我鉴定
2014/01/22 职场文书
清洁工岗位职责
2014/01/29 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书