(精华)2020年8月6日 Angular axio的封装
发布日期:2021-06-29 15:08:57
浏览次数:2
分类:技术文章
本文共 3256 字,大约阅读时间需要 10 分钟。
import { Injectable } from '@angular/core';import axios from 'axios';import Qs from 'qs';axios.defaults.timeout = 5000;import { environment } from '../../environments/environment';console.log(environment.baseURL);axios.defaults.baseURL = environment.baseURL; //填写域名//http request 拦截器 客户端给服务端 的数据 axios.interceptors.request.use( config => { config.headers.common = { 'X-API-TOKEN': localStorage.getItem('token'), 'version': '1.0', 'Content-Type': 'application/json;charset=UTF-8' } if (config.data && config.data.form) { //转化成formData格式 // transformRequest只能用在 PUT, POST, PATCH 这几个请求方法 config.transformRequest = [function (data) { //方式一 delete data.form; // var ret = ''; // for (let it in data) { // ret += it+'=' +data[it] + '&'; // } // return ret.substring(0,ret.length-1); //方式二: var test2 = Qs.stringify(data); return test2; }] } return config; }, error => { return Promise.reject(); });//响应拦截器即异常处理 - -- 服务给客户端的数据进行处理axios.interceptors.response.use(response => { if (response.status === 200) { return Promise.resolve(response); } else { return Promise.reject(response); } // return response}, err => { if (err && err.response) { var errorMsg = ''; switch (err.response.status) { case 400: console.log('错误请求') errorMsg = '错误请求'; break; case 401: console.log('未授权,请重新登录'); errorMsg = '未授权,请重新登录'; break; case 403: console.log('拒绝访问') errorMsg = '拒绝访问'; break; case 404: console.log('请求错误,未找到该资源') errorMsg = '请求错误,未找到该资源'; break; case 405: console.log('请求方法未允许') errorMsg = '请求方法未允许'; break; case 408: console.log('请求超时') errorMsg = '请求超时'; break; case 500: console.log('服务器端出错') errorMsg = '服务器端出错'; break; case 501: console.log('网络未实现') errorMsg = '请求方法未允许'; break; case 502: console.log('网络错误') errorMsg = '网络错误'; break; case 503: console.log('服务不可用') errorMsg = '服务不可用'; break; case 504: console.log('网络超时') errorMsg = '网络超时'; break; case 505: console.log('http版本不支持该请求') errorMsg = 'http版本不支持该请求'; break; default: console.log(`连接错误${ err.response.status}`) } alert(errorMsg); } else { console.log('连接到服务器失败') } return Promise.resolve(err.response)})@Injectable({ providedIn: 'root'})export class AxiosService { constructor() { } // 包装一个 直接利用axios自身是一个Promise对象的思想封装 postFun(url, params) { return axios.post(url, params) .then(response => { if (response.status == 200) { return Promise.resolve(response.data); //注意必须要有return,相当于new Promise里的resolve,告诉接口已经获取数据 } }) .catch(err => { }) } getFun(url, params = { }) { return new Promise((resolve, reject) => { axios.get(url, { params: params }) .then(response => { resolve(response.data); }) }) }}
转载地址:https://codeboy.blog.csdn.net/article/details/107851418 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月29日 00时21分55秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
「第二篇」全国一等奖,经验帖。
2019-04-29
「第三篇」全国电子设计竞赛,这些你必须知道的比赛细节,文末附上近十年电赛题目下载...
2019-04-29
5G小科普(漫画版,So easy!)
2019-04-29
无人再提华强北
2019-04-29
千万不要小瞧那些不好好写代码的程序员
2019-04-29
80后,天才程序员, Facebook 第一任 CTO,看看开挂的人生到底有多变态?
2019-04-29
「第四篇」电赛控制题可以准备一些什么?
2019-04-29
「第五篇」全国电子设计竞赛-电源题设计方案总结
2019-04-29
「第六篇」对于电赛,我们应该看重什么?
2019-04-29
树莓派翻车了
2019-04-29
垃圾分类背后的数据和真相
2019-04-29
PID算法搞不懂?看这篇文章就够了。
2019-04-29
这位电子工程师,你不能错过。
2019-04-29
十八般武艺教你如何解决问题
2019-04-29
「权威发布」2019年大学生电子设计竞赛,仪器设备和主要元器件清单
2019-04-29
「重磅猜题之第二篇」2019年大学生电子设计竞赛
2019-04-29
知乎:硬件和软件哪个吃香?
2019-04-29
中国深圳,600架无人机的盛典!
2019-04-29
干货分享 JVM 之第 3 篇 —— Java 内存结构相关
2019-04-29