axios封装与传参示例详解


Posted in Javascript onOctober 18, 2020

1.开发环境 vue+typescript

2.电脑系统 windows10专业版

3.在开发的过程中,我们会经常使用到 axios进行数据的交互,下面我来说一下,axios封装和传参!

4-1:下面结构如下:

axios封装与传参示例详解

4-2:request.js代码如下:

import axios from 'axios'
import qs from 'qs'
axios.defaults.timeout = 2000000;      //响应时间
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';  //配置请求头
// axios.defaults.baseURL = 'http://192.168.137.208:3000/'; //配置接口地址

//POST传参序列化(添加请求拦截器)
axios.interceptors.request.use((config) => {
 //在发送请求之前做某件事
 // config.headers.Accept="appliaction/json,text/plan";
 if(config.method === 'post'){
  config.data = qs.stringify(config.data);
 }
 return config;
},(error) =>{
 console.log('错误的传参')
 return Promise.reject(error);
});
// axios.interceptors.response.use((res) => {
//  //对响应数据做些事
//  if (!res.data) {
//  return Promise.resolve(res);
//  }
//  return res;
// }, (error) => {
//  console.log(error);
//  console.log('网络异常')
//  return Promise.reject(error);
// });

//返回状态判断(添加响应拦截器)
axios.interceptors.response.use((res) =>{
 //对响应数据做些事
 if(!res.data.success){
  return Promise.resolve(res);
 }
 return res;
}, (error) => {
 console.log('网络异常')
 return Promise.reject(error);
});

//返回一个Promise(发送post请求)
export function fetchPost(url,param) {
 return new Promise((resolve, reject) => {
  axios.post(url,param)
   .then(response => {
    resolve(response);
   }, err => {
    reject(err);
   })
   .catch((error) => {
    reject(error)
   })
 })
}
// 返回一个Promise(发送get请求)
export function fetchGet(url,param) {
 return new Promise((resolve, reject) => {
  axios.get(url,{params:param})
   .then(response => {
    resolve(response)
   }, err => {
    reject(err)
   })
   .catch((error) => {
    reject(error)
   })
 })
}
export default {
 fetchPost,
 fetchGet,
}

//注意:请求头的配置,决定了传参的方法和格式,请求头的配置至关重要

5.SheBei.ts代码如下:

import {fetchPost,fetchGet} from '@/utils/request'
export function feng(feng){
 return fetchPost('/feng',feng);
}

6.Home.vue请求代码如下:

mounted(){
  let a:any={
   "name":"111",
   "pass":"000"
  }
  feng(a).then((res)=>{
   console.log(res);
  })
 }

7.效果如下:

axios封装与传参示例详解

8.在node.js中输入如下:

axios封装与传参示例详解

//可以看到,接受到了前端传过来的参数!

9.参数的传递取决于,request.ts中请求头的配置!

10.请求头配置如下:

--第一种
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; //请求体中的数据会以普通表单形式(键值对)发送到后端
--第二种
axios.defaults.headers.post['Content-Type'] ='application/json'; // 请求体中的数据会以json字符串的形式发送到后端
--第三种
axios.defaults.headers.post['Content-Type'] ='multipart/form-data'; // 它会将请求体的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件

11.使用10第一种,传参效果如下:

axios封装与传参示例详解

12.使用10第二种,传参效果如下:

axios封装与传参示例详解

//注意:使用这种方法,需要修改request.ts代码:

axios封装与传参示例详解

13.使用10第三种,传参效果如下:

axios封装与传参示例详解

14.本期的教程到了这里就结束啦,让我们一起努力走向巅峰!

总结

到此这篇关于axios封装与传参示例的文章就介绍到这了,更多相关axios封装与传参内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jquery png 透明解决方案(推荐)
Aug 21 Javascript
javascript:history.go()和History.back()的区别及应用
Nov 25 Javascript
IE不支持getElementsByClassName最终完美解决方案
Dec 17 Javascript
jquery 提交值不为空的元素示例代码
May 10 Javascript
深入理解JS中的变量及作用域、undefined与null
Mar 04 Javascript
JavaScript中计算网页中某个元素的位置
Jun 10 Javascript
javascript中this用法实例详解
Apr 06 Javascript
解决ie img标签内存泄漏的问题
Oct 13 Javascript
JavaScript EventEmitter 背后的秘密 完整版
Mar 29 Javascript
js Element Traversal规范中的元素遍历方法
Apr 19 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
May 22 Javascript
vue实现手机端省市区区域选择
Sep 27 Javascript
详解如何使用React Hooks请求数据并渲染
Oct 18 #Javascript
js中复选框的取值及赋值示例详解
Oct 18 #Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
Oct 18 #Javascript
详解如何在Javascript中使用Object.freeze()
Oct 18 #Javascript
从表单校验看JavaScript策略模式的使用详解
Oct 17 #Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
Oct 17 #Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
Oct 16 #Javascript
You might like
php smarty模版引擎中的缓存应用
2009/12/11 PHP
PHP合并两个数组的两种方式的异同
2012/09/14 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
php中实现精确设置session过期时间的方法
2014/07/17 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
JavaScript作用域链示例分享
2014/05/27 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
值得分享和收藏的xmlplus组件学习教程
2017/05/05 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
详解JavaScript中的强制类型转换
2019/04/15 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
2019/05/18 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
vue-router 2.0 跳转之router.push()用法说明
2020/08/12 Javascript
django实现分页的方法
2015/05/26 Python
在Django框架中编写Contact表单的教程
2015/07/17 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
python3写爬取B站视频弹幕功能
2017/12/22 Python
对python抓取需要登录网站数据的方法详解
2018/05/21 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
2020/01/09 Python
用CSS3的box-reflect设置文字倒影效果的方法讲解
2016/03/07 HTML / CSS
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
机电专业毕业生求职信
2013/10/27 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
销售区域经理岗位职责
2015/04/10 职场文书
历史博物馆观后感
2015/06/05 职场文书
车间班组长竞聘书
2015/09/15 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android