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 相关文章推荐
对联广告js flash激活
Oct 19 Javascript
JS文本框追加多个下拉框的值的简单实例
Jul 12 Javascript
node.js中的fs.closeSync方法使用说明
Dec 17 Javascript
在JavaScript中操作时间之getMonth()方法的使用
Jun 10 Javascript
JavaScript实现Java中Map容器的方法
Oct 09 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
May 20 jQuery
利用js编写网页进度条效果
Oct 08 Javascript
ES7中利用Await减少回调嵌套的方法详解
Nov 01 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
May 10 Javascript
javascript实现图片轮播代码
Jul 09 Javascript
js获取本日、本周、本月的时间代码
Feb 01 Javascript
如何优雅地取消 JavaScript 异步任务
Mar 22 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中json_encode()和json_decode()
2014/05/25 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
PHP运用foreach神奇的转换数组(实例讲解)
2018/02/01 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
Jquery下:nth-child(an+b)的使用注意
2011/05/28 Javascript
Javascript图像处理思路及实现代码
2012/12/25 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
JS判断两个时间大小的示例代码
2014/01/28 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
avalon js实现仿微博拖动图片排序
2015/08/14 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
vue父子组件的嵌套的示例代码
2017/09/08 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
详解vue项目打包步骤
2019/03/29 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
[36:43]NB vs Optic 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
python标准日志模块logging的使用方法
2013/11/01 Python
详解Python中的Descriptor描述符类
2016/06/14 Python
Python基于time模块求程序运行时间的方法
2017/09/18 Python
Python字符串的一些操作方法总结
2019/06/10 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
为什么称python为胶水语言
2020/06/16 Python
台湾SHOPRO购物行家:亚洲首创影视.3C.家电.优质购物平台
2018/05/07 全球购物
介绍下Lucene建立索引的过程
2016/03/02 面试题
会计学应届毕业生推荐信
2013/11/04 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
酒店销售经理岗位职责
2015/04/02 职场文书
离婚案件原告代理词
2015/05/23 职场文书