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动态调整TextArea高度的代码
Dec 28 Javascript
Jquery 获取checkbox的checked问题
Nov 16 Javascript
Javascript 浮点运算的问题分析与解决方法
Aug 27 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
Nov 13 Javascript
使用Node.js配合Nginx实现高负载网络
Jun 28 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
Dec 23 Javascript
在HTML文档中嵌入JavaScript的四种方法
May 07 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
Jul 28 Javascript
vue 使用自定义指令实现表单校验的方法
Aug 28 Javascript
Vuex 单状态库与多模块状态库详解
Dec 11 Javascript
JS中超越现实的匿名函数用法实例分析
Jun 21 Javascript
如何利用node转发请求详解
Sep 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
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
解析PHP计算页面执行时间的实现代码
2013/06/18 PHP
PHP中require和include路径问题详解
2014/12/25 PHP
php实现粘贴截图并完成上传功能
2015/05/17 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
2017/06/07 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
php curl发送请求实例方法
2019/08/01 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
子窗口、父窗口和Silverlight之间的相互调用
2010/08/16 Javascript
16个最流行的JavaScript框架[推荐]
2011/05/29 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
JS闭包原理与应用经典示例
2018/12/20 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
[07:08]2014DOTA2西雅图国际邀请赛 小组赛7月11日TOPPLAY
2014/07/11 DOTA
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
django搭建项目配置环境和创建表过程详解
2019/07/22 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
FitFlop澳大利亚官网:英国符合人体工学的鞋类品牌
2017/06/05 全球购物
银行优秀员工事迹
2014/02/06 职场文书
超市国庆节促销方案
2014/02/20 职场文书
聘任书的写作格式及范文
2014/03/29 职场文书
小学班主任工作总结2015
2015/04/07 职场文书
2015年派出所工作总结
2015/04/24 职场文书
提升Nginx性能的一些建议
2021/03/31 Servers
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers