axios 请求数据
发布日期:2022-02-22 16:04:48
浏览次数:29
分类:技术文章
本文共 2916 字,大约阅读时间需要 9 分钟。
axios请求方法
- get请求:获取数据 2个参数 url,config
axios.get('/index.json',{ params:{ id:12}}).then((res)=>{ console.log(res)})axios({ method:'get',url:'/index.json',params:{ id:12}}).then((res)=>{ console.log(res)})
- post请求:发送数据 3个参数 url,data,config
- application/json 请求:
axios.post('/index.json', { id:12}).then((res)=>{ console.log(res)}) axios({ method:'post',url:'/index.json',data:{ id:12}})
- form-data 请求:
let data = { id:12}let formData = new FormData();for(let key in data){ formData.append(key,data[key])}axios.post('/index.json',formData)
- put请求:修改数据,将所有数据提交到后台
- patch请求:修改数据,将修改的数据提交到后台 post,put ,patch请求的区别只是请求类型不同
- delete请求:删除数据 2个参数 url,config url中传递参数query:
axios.delete('/index.json',{params:{id:12}})
请求体中传参 request payload:axios.delete('/index.json',{data:{id:12}})
并发请求:同时进行多个请求,统一处理请求数据
- axios.all();
- axios.spread();
axios.all([axios.get('/index.json'),axios.get('/city.json')]) // 相对路径,相对于baseURL .then(axios.spread((indexRes,cityRes)=>{ console.log(indexRes,cityRes)}))
axios实例
当只要一种后端语言时,可以直接使用axios请求数据(其实使用的是默认创建的axios实例)
当需要向多个域名请求或请求时长不同时,需要使用axios实例请求数据。创建:
axios.create({ //实例的配置参数: baseURL:'',//设置请求域名 timeout: ,//设置请求的超时时长,单位ms;一般由后端定义 url:'', method:'', headers:{ },//请求头 params:{ },data:{ }})
使用axios实例请求数据:
axios实例.get('/data.json') //将axios改为axios实例名称
配置
- axios全局配置:
axios.default.timeout = xx
- axios实例配置:
axios.create()
//没有config参数时,默认使用全局配置 修改实例配置:axios实例.default.timeout = xx
- axios请求配置:
axios实例.get('/data.json',{timeout:5000})
拦截器:请求拦截器和响应拦截器
一般给axios实例添加拦截器,添加属性;直接使用axios会造成全局污染
axios实例.interceptors.request.use(//请求前的回调函数 config=>{ //发送请求前修改一些配置或弹出一些内容 config.headers.token = ''return config},//请求错误的回调函数 err=>{ //请求错误:发送请求没有到达后端,返回404 not found 401请求超时return Promise.reject(err)})
axios实例.interceptors.request.use( config=>{ //请求成功对响应数据做处理 return config}, err=>{ //响应错误:eg 查询不到数据,返回500系统错误 502系统重启return Promise.reject(err)})
请求错误与相应错误的区分:是否到达后端
取消拦截器(了解)
axios.interceptors.request.eject(拦截器变量名)axios.interceptors.response.eject(拦截器变量名)
错误处理:一般在拦截器的err回调中添加统一的错误处理;特殊的处理添加到axios.get().catch()中
应用:登录之后才能评论(访问评论接口),对未登录的用户进行请求拦截
token:一个编码的字符串包含加密后的用户个人信息,用来识别登录的用户身份
一把token放在请求头headers中
取消请求(了解)
let source = axios.CancelToken.source();//生成source对象axios.get('/data.json',{ cancelToken:source.token})source.cancel('cancel http');//取消请求,可选参数:message取消信息。
封装
- 创建API管理文件contactAPI.js:将所有请求接口(url,method)放入一个对象(常量)中,导出
// API方法管理文件const CONTACT_API = { // 获取联系人列表 getContactList:{ method:'get', url:'/contactList' }, // 添加联系人 AddContactListJson:{ method:'post', url:'/contact/new/json'},……export default CONTACT_API}
- 封装axios到http.js中,循环遍历导出的对象常量,将所有方法(请求接口)放到一个容器http对象(key:方法;value:promise对象)中。
- 统一请求格式/参数
- 添加拦截器 添加请求拦截器,请求之前 加载中…,返回请求结果 添加响应拦截器,响应完成 清除 加载中… ,返回请求数据
- 导出http对象。main.js中导入,将http挂载到vue原型上
Vue.prototype.$http=http;
- 应用;async function(){ this.$http.方法名(参数列表)}
转载地址:https://blog.csdn.net/Conradine_Lian/article/details/107234728 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月13日 14时21分09秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
理解String.intern()和String类常量池疑难解析例子
2019-04-26
LeetCode题解(1175):质数排列(Python)
2019-04-26
【Android平台】 Alljoyn学习笔记二 编译自带的demo的步骤
2019-04-26
【Android平台】 Alljoyn学习笔记四 Android Core API参考
2019-04-26
【Alljoyn】Alljoyn学习笔记五 AllJoyn开源技术基础概念解析
2019-04-26
【Alljoyn】 Alljoyn学习笔记六 Alljoyn基本概念
2019-04-26
【Alljoyn】 Alljoyn学习笔记七 Alljoyn瘦客户端库介绍
2019-04-26
【Android】Activity生命周期
2019-04-26
【Android】Activity的四种launchMode
2019-04-26
【Android】Activity的task相关
2019-04-26
【Android】 Intent应用详解
2019-04-26
【Android】 Intent详解
2019-04-26
【Android】 常用的Intent
2019-04-26
Android中AsyncTask的简单用法
2019-04-26
【Android】 Android中Log调试详解
2019-04-26
【Android】Android中WIFI开发总结(二)
2019-04-26
【Android】Android之WiFi开发应用示例
2019-04-26
【Android】 Android adb常见问题整理
2019-04-26
【Android】 Android体系结构图
2019-04-26