(精华)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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:(精华)2020年8月6日 Angular 路由的使用
下一篇:(精华)2020年8月6日 Angular http请求模块的使用

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月29日 00时21分55秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章