当前位置: 首页 > news >正文

编程网站有哪些建设工程资料网站

编程网站有哪些,建设工程资料网站,品牌建设什么意思,windows wordpress固定链接创建多个实例共用请求拦截器和响应拦截器#xff1a;使用的是函数的继承#xff0c;也就是call()方法#xff0c;这个方法第一个参数就是this,后面的参数可以是一个也可以是多个。最后一定要记得要return出去#xff0c;否则接口是拿不到数据的。 import axios from axios…创建多个实例共用请求拦截器和响应拦截器使用的是函数的继承也就是call()方法这个方法第一个参数就是this,后面的参数可以是一个也可以是多个。最后一定要记得要return出去否则接口是拿不到数据的。 import axios from axios; import Cookie from js-cookie; const BASE_URL process.env.VUE_APP_API_BASE_URL; const BASE_URL_QUOTE process.env.VUE_APP_API_BASE_URL_QUOTE;// 跨域认证信息 header 名 const xsrfHeaderName Authorization;axios.defaults.timeout 20000; axios.defaults.withCredentials false; axios.defaults.xsrfHeaderName xsrfHeaderName; axios.defaults.xsrfCookieName xsrfHeaderName; axios.defaults.headers {accept-language:zh-Hans}; const request axios.create({baseURL: BASE_URL, }); const requestQuoteCenter axios.create({baseURL: BASE_URL_QUOTE, }); // http method const METHOD {GET: get,POST: post,PUT: put,DELETE: delete, };/*** axios请求* param url 请求地址* param method {METHOD} http method* param params 请求参数* returns {PromiseAxiosResponseT}*/async function requestQuoteCenter(url, method, params, config) {switch (method) {case METHOD.GET:return axios.get(url, { params, ...config });case METHOD.POST:return axios.post(url, params, config);case METHOD.PUT:return axios.put(url, params, config);case METHOD.DELETE:return axios.delete(url, { params, ...config });default:return axios.get(url, { params, ...config });} } async function request(url, method, params, config) {return await requestQuoteCenter.call(this, url, method, params, config); } /*** 加载 axios 拦截器* param interceptors* param options*/ function loadInterceptors(interceptors, options) {const { request, response } interceptors;// 加载请求拦截器request.forEach((item) {let { onFulfilled, onRejected } item;if (!onFulfilled || typeof onFulfilled ! function) {onFulfilled (config) config;}if (!onRejected || typeof onRejected ! function) {onRejected (error) Promise.reject(error);}axios.interceptors.request.use((config) onFulfilled(config, options),(error) onRejected(error, options));});// 加载响应拦截器response.forEach((item) {let { onFulfilled, onRejected } item;if (!onFulfilled || typeof onFulfilled ! function) {onFulfilled (response) response;}if (!onRejected || typeof onRejected ! function) {onRejected (error) Promise.reject(error);}axios.interceptors.response.use((response) onFulfilled(response, options),(error) onRejected(error, options));}); }export {METHOD,request,loadInterceptors,requestQuoteCenter, };详细的请求和响应拦截器内容——分请求token认证校验响应401和403校验 import Cookie from js-cookie; const xsrfHeaderName import.meta.env.VITE_TOKEN_NAME; import { removeAuthorization } from /utils/request;// 401拦截 const resp401 {/*** 响应数据之前做点什么* param response 响应对象* param options 应用配置 包含: {router, i18n, store, message}* returns {*}*/onFulfilled(response, options) {const { message } options;if (response.code 401) {message.error(无此权限);}return response;},/*** 响应出错时执行* param error 错误对象* param options 应用配置 包含: {router, i18n, store, message}* returns {Promisenever}*/onRejected(error, options) {const { router, message } options;if (error.response error.response.status 401) {message.error(认证 token 已过期请重新登录);Cookie.remove(xsrfHeaderName);removeAuthorization();router.push(/login);return Promise.reject(error);}let msg ;if (error.response error.response.data error.response.data.error_description) {msg error.response.data.error_description;} else if (error.response error.response.data error.response.data.error) {msg error.response.data.error.message;} else {msg error.message;}message.error(msg);return Promise.reject(error);}, };const resp403 {onFulfilled(response, options) {const { message } options;if (response.code 403) {message.error(请求被拒绝);}return response.data;},// onRejected(error, options) {// const {message} options// const {response} error// if (response.status 403) {// message.error(请求被拒绝)// }// return Promise.reject(error)// } };const reqCommon {/*** 发送请求之前做些什么* param config axios config* param options 应用配置 包含: {router, i18n, store, message}* returns {*}*/onFulfilled(config, options) {const { router, message } options;const { url, xsrfCookieName, headers } config;// if (url.indexOf(login) -1 xsrfCookieName !Cookie.get(xsrfCookieName)) {// message.warning(认证 token 已过期请重新登录)// }if (headers.Authorization xsrfCookieName !Cookie.get(xsrfCookieName)) {message.warning(认证 token 已过期请重新登录);}if (!headers.__tenant) {config.headers[Authorization] Cookie.get(xsrfHeaderName);} else {delete config.headers.Authorization;}return config;},/*** 请求出错时做点什么* param error 错误对象* param options 应用配置 包含: {router, i18n, store, message}* returns {Promisenever}*/onRejected(error, options) {const { message } options;let msg ;if (error.response error.response.data) {msg error.response.data.error;} else {msg error.message;}message.error(msg);return Promise.reject(error);}, };export default {request: [reqCommon], // 请求拦截response: [resp401, resp403], // 响应拦截 };上面两个文件合并后的处理如下 在main.js中添加如下内容 import { loadInterceptors } from /utils/request; import interceptors from /utils/axios-interceptors; loadInterceptors(interceptors, {router, store, i18n, message})403报错时错误信息不提示的问题——解决办法 今天发现一个问题如果是接口报403错误时通过接口调用的时候是无法获取到错误信息的。 之前的调用接口的方法就是 import {request,METHOD} from ./request.js;//就是从上面第一个文件导出的参数中获取到request export function del(id) {return request(/api/app/article/${id}, METHOD.DELETE) }1.403不报错的解决办法1——通过async await的方式来处理接口 import {request,METHOD} from ./request.js;//就是从上面第一个文件导出的参数中获取到request export async function del(id) {return await request(/api/app/article/${id}, METHOD.DELETE) }2.403不报错的解决办法2——接口请求后的方法async await的处理方法 import {request} from ./request.js;//就是从上面第一个文件导出的参数中获取到request async customRequest(file) {let formData new FormData();formData.append(file, file.file);let resp await request(this.baseUrl, post, formData);//此时如果接口调用失败则会抛出错误提示信息否则会执行下面的代码了this.$emit(uploadSucc, resp.Data); },
http://www.w-s-a.com/news/496871/

相关文章:

  • 做海报在哪个网站可以找素材网址申请注册方法
  • 网站建设分哪些类别别人做的网站不能用
  • 做网站网站会怎么样全国高校校园网站联盟建设
  • 整站下载器 做网站地图地产项目网站设计
  • 创意设计网站公司手机wap网站建设多少钱
  • 甘肃省第八建设集团公司网站seo高级优化方法
  • 精美的商城网站介绍最多人用的wordpress子主题
  • 检察门户网站建设情况俄外长抵达北京
  • 老电脑做网站服务器网站在线留言如何做
  • 南宁广告公司网站建设小程序源码破解
  • 沛县做网站xlec网站建设开发方式包括哪些方面
  • 山西网站建设 哪家好四川城乡和建设厅网站
  • 有瀑布流的网站小型商城网站
  • 百石网怎么做网站二次开发软件
  • 网站域名是什么东西制作网页哪家好
  • 合肥网站建设团队简述网站内容管理流程
  • 网站广告是内容营销吗wordpress增加背景图片
  • 网站建设技术jsp课程设计响应式布局网站开发
  • 东莞网站排名优化seo套路网站怎么做的
  • 我做网站网络建站一般多少钱
  • 如何快速提升网站关键词排名房地产网站开发毕业设计
  • 做网站 提交源码 论坛sem分析是什么意思
  • 网站建设与部署阿里云大学百度付费推广有几种方式
  • 作品集怎么做网站个人简历模板免费下
  • 工业网站素材重庆关键词自动排名
  • 拖拽式网站建设费用微网站怎么做的好名字
  • 长沙电信网站备案谷歌推广怎么做最有效
  • 网站建设与管理总结报告华为开发者联盟
  • 门诊部网站建设天空建筑网站
  • 扬州市城乡建设网站高端品牌鞋子有哪些牌子