关于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的一个拖拽到指定区域内的效果
Sep 21 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
Feb 03 Javascript
javascript 星级评分效果(手写)
Dec 24 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
Oct 20 Javascript
动态加载JS文件的三种方法
Nov 08 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
Dec 24 Javascript
基于JavaScript实现弹出框效果
Feb 19 Javascript
走进javascript——不起眼的基础,值和分号
Feb 24 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
May 14 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
May 18 Javascript
vue elementui form表单验证的实现
Nov 11 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
Nov 13 Javascript
vscode中使用npm安装babel的方法
Element实现动态表格的示例代码
JavaScript分页组件使用方法详解
webpack的移动端适配方案小结
Jul 25 #Javascript
Vue3.0 手写放大镜效果
ElementUI实现el-form表单重置功能按钮
vue项目多环境配置(.env)的实现
You might like
php三维数组去重(示例代码)
2013/11/26 PHP
PHP答题类应用接口实例
2015/02/09 PHP
form自动提交实例讲解
2017/07/10 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
javascript中检测变量的类型的代码
2010/12/28 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
jquery实现的可隐藏重现的靠边悬浮层实例代码
2013/05/27 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
深入理解JavaScript程序中内存泄漏
2016/03/17 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
2017/03/09 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
2017/09/01 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
微信小程序实现即时通信聊天功能的实例代码
2018/08/17 Javascript
JavaScript中引用vs复制示例详析
2018/12/06 Javascript
JavaScript常见继承模式实例小结
2019/01/11 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
python中numpy.zeros(np.zeros)的使用方法
2017/11/07 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
python实现多张图片拼接成大图
2019/01/15 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
浅谈python3中input输入的使用
2019/08/02 Python
为什么python比较流行
2020/06/19 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
2014年小学重阳节活动策划方案
2014/09/16 职场文书
玄武湖导游词
2015/02/05 职场文书