关于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 提交和设置表单的值
Dec 19 Javascript
Android中资源文件(非代码部分)的使用概览
Dec 18 Javascript
js正则表达式匹配数字字母下划线等
Apr 14 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
May 03 Javascript
JavaScript实现自动切换图片代码
Oct 11 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
Nov 21 Javascript
vue不通过路由直接获取url中参数的方法示例
Aug 24 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
Nov 09 jQuery
微信小程序之下拉列表实现方法解析(附完整源码)
Aug 23 Javascript
Vue axios 将传递的json数据转为form data的例子
Oct 29 Javascript
Vue+tracking.js 实现前端人脸检测功能
Apr 16 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
May 01 Javascript
vscode中使用npm安装babel的方法
Element实现动态表格的示例代码
JavaScript分页组件使用方法详解
webpack的移动端适配方案小结
Jul 25 #Javascript
Vue3.0 手写放大镜效果
ElementUI实现el-form表单重置功能按钮
vue项目多环境配置(.env)的实现
You might like
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
转一个日期输入控件,支持FF
2007/04/27 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
浅析js封装和作用域
2013/07/09 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
初识SmartJS - AOP三剑客
2014/06/08 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
js实现防止被iframe的方法
2015/07/03 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
2015/08/19 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
2015/12/16 Javascript
JS实现左右无缝轮播图代码
2016/05/01 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
JS实现留言板功能[楼层效果展示]
2017/12/27 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
Python读写锁实现实现代码解析
2020/11/28 Python
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
超市采购员岗位职责
2014/02/01 职场文书
《鲁班和橹板》教学反思
2014/04/27 职场文书
学校领导班子对照检查材料
2014/08/28 职场文书
2015高三毕业寄语赠言
2015/02/27 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
Python基础知识之变量的详解
2021/04/14 Python
SpringBoot快速入门详解
2021/07/21 Java/Android
Nginx配置之禁止指定IP访问
2022/05/02 Servers