关于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 相关文章推荐
JavaScript While 循环基础教程
Apr 05 Javascript
Mootools 1.2教程 滑动效果(Slide)
Sep 15 Javascript
js函数调用的方式
May 06 Javascript
JS实现进入页面时渐变背景色的方法
Feb 25 Javascript
深入解析JavaScript中的arguments对象
Jun 12 Javascript
AngularJS辅助库browserTrigger用法示例
Nov 03 Javascript
jquery实时获取时间的简单实例
Jan 26 Javascript
javascript history对象详解
Feb 09 Javascript
如何用webpack4带你实现一个vue的打包的项目
Jun 20 Javascript
解决vue中el-tab-pane切换的问题
Jul 19 Javascript
Vue 列表页带参数进详情页的操作(router-link)
Nov 13 Javascript
JavaScript手写数组的常用函数总结
Nov 22 Javascript
vscode中使用npm安装babel的方法
Element实现动态表格的示例代码
JavaScript分页组件使用方法详解
webpack的移动端适配方案小结
Jul 25 #Javascript
Vue3.0 手写放大镜效果
ElementUI实现el-form表单重置功能按钮
vue项目多环境配置(.env)的实现
You might like
discuz7 phpMysql操作类
2009/06/21 PHP
php算开始时间到过期时间的相隔的天数
2011/01/12 PHP
php中防止恶意刷新页面的代码小结
2012/10/31 PHP
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
php中文验证码实现示例分享
2014/01/12 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
简单实现php上传文件功能
2017/09/21 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
Javascript this关键字使用分析
2008/10/21 Javascript
HTML上传控件取消选择
2013/03/06 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
jQuery webuploader分片上传大文件
2016/11/07 Javascript
Javascript继承机制详解
2017/05/30 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
JSONObject与JSONArray使用方法解析
2020/09/28 Javascript
[56:24]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第二局
2016/03/04 DOTA
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
Python爬虫将爬取的图片写入world文档的方法
2018/11/07 Python
Django 模型类(models.py)的定义详解
2019/07/19 Python
浅析Django中关于session的使用
2019/12/30 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
2020/04/20 Python
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
潘婷洗发水广告词
2014/03/14 职场文书
股指期货心得体会
2014/09/10 职场文书
公司慰问信范文
2015/03/23 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
2021/04/01 PHP
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
图解排序算法之希尔排序Java实现
2021/06/26 Java/Android
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技