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 相关文章推荐
Javascript 面向对象 继承
May 13 Javascript
js判断选择的时间是否大于今天的代码
Aug 20 Javascript
JQuery控制radio选中和不选中方法总结
Apr 15 Javascript
详解AngularJS中的http拦截
Feb 09 Javascript
如何使用jquery修改css中带有!important的样式属性
Apr 28 Javascript
node.js文件上传处理示例
Oct 27 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
Oct 28 Javascript
使用javaScript实现鼠标拖拽事件
Apr 03 Javascript
vue-router的使用方法及含参数的配置方法
Nov 13 Javascript
Typescript的三种运行方式(小结)
Sep 18 Javascript
使用Node.js实现base64和png文件相互转换的方法
Mar 11 Javascript
使用PDF.js渲染canvas实现预览pdf的效果示例
Apr 17 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给图片加文字水印
2015/07/31 PHP
利用js实现禁止复制文本信息
2015/06/03 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
JavaScript数组方法总结分析
2016/05/06 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
Canvas 制作动态进度加载水球详解及实例代码
2016/12/09 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
关于redux-saga中take使用方法详解
2018/02/27 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
vue插槽slot的理解和使用方法
2019/04/03 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
利用js实现简易红绿灯
2020/10/15 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日小组赛B组Effect VS Secret
2018/03/30 DOTA
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
python 实现朴素贝叶斯算法的示例
2020/09/30 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
2021/02/02 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
一套软件开发工程师笔试题
2015/05/18 面试题
党课学习思想汇报
2014/01/02 职场文书
校本教研工作制度
2014/01/22 职场文书
初二学习计划书范文
2014/04/27 职场文书
工作建议书范文
2014/05/13 职场文书
考生诚信考试承诺书
2014/05/23 职场文书
师范生求职信
2014/06/14 职场文书
学校教师读书活动总结
2014/07/08 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书
大学生暑期实践报告
2015/07/13 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers