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

企业培训公司登封做网站优化

企业培训公司,登封做网站优化,网络营销产品策略,代理记账公司排名前十强通常在开发时,后端向前端返回的数据可以如下: 1 使用restful api充分利用http状态码,然后在data中追加code字段,请求成功返回200,请求失败返回404,401,500等状态码,并且在code字段中给出详细的字符串信息2 再包一层&a…

通常在开发时,后端向前端返回的数据可以如下:

  • 1 使用restful api充分利用http状态码,然后在data中追加code字段,请求成功返回200,请求失败返回404,401,500等状态码,并且在code字段中给出详细的字符串信息
  • 2 再包一层,所有请求不论失败还是成功状态返回均为200,然后在code中,返回实际的成功或失败的原因(可以是number,也可以是string)

以下以第二种为例:

type Content = Array<unknown> | Record<string, unknown> | null;interface CustomResponse<T extends Content = Content> {code: number;//具体的code,这里依然使用的400,401等200表示成功data: T;msg: string;
}export enum Method {/** Get请求 */Get = 'GET',/** Post请求 */Post = 'POST',/** Put请求 */Put = 'PUT',/** Delete请求 */Delete = 'DELETE',
}
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';
import router from '@/router';
import { ElMessage, ElMessageBox } from 'element-plus';
import { localStorage } from '@/storage';
import { Method } from '@/enum';
import useStore from '@/store';
import qs from 'qs';//  白名单列表,用于直接显示前端定义的错误
const whiteList: string[] = [];const requests: any[] = [];
const cancelRequest = (config: any, cancelAll = false) => {for (const req in requests) {if (!cancelAll) {if (requests[req].url === `${config.method}-${config.url}`) {requests[req].controller.abort();requests.splice(Number(req), 1);}} else {requests[req].controller.abort();requests.splice(Number(req), 1);}}
};// 创建 axios 实例
const service = axios.create({baseURL: import.meta.env.DEV ? 'api-dev' : 'api-prod',timeout: 60000,
});// 请求拦截器
service.interceptors.request.use((config: AxiosRequestConfig) => {const { user } = useStore();// 请求自动添加tokenif (user.token) {config.headers!.Authorization = `${localStorage.get('token')}`;}// 请求队列,用于取消请求const controller = new AbortController();config.signal = controller.signal;requests.push({url: `${config.method}-${config.url}`,controller: controller,});return config;},error => {return Promise.reject(error);}
);// 响应拦截器
service.interceptors.response.use((response: AxiosResponse) => {const { status } = response;if (status === 200) {switch (response.data.code) {case 200:return response.data;case 404:// 自定义的错误码,可以与http状态码一致,前后端约定即可// 同时根据错误码进行跳转,清空缓存等动作break;......default:break;}}return response.data;},error => {return Promise.reject(new Error(error.message || 'Error'));}
);function customRequest(method: Method
): <T extends Content>(url: string,data?: Record<string, any>,options?: AxiosRequestConfig
) => Promise<T> {return async function <T extends Content>(url: string,data?: Record<string, any>,options?: AxiosRequestConfig) {let restParams = {};if (method === Method.Get) {restParams = {params: { ...data?.params },paramsSerializer: function (params: any) {//arg: [1, 2]会被转换为不同形式: indices转换为'arg[0]=1&arg[1]=2'   brackets转换为'arg[]=1&arg[]=2'  repeat转换为'arg=1&arg=2'return qs.stringify(params, { arrayFormat: 'repeat' }); },};} else {restParams = {data,...options,};}const res = await service.request<T, CustomResponse<T>>({ url, method: method, ...restParams });// 为了不在每个请求后添加如下代码,所以在此统一处理if (res.code === 200 && res.data) {return res.data;}throw res.msg;};
}// axios 实例
export default service;// 自定义axios 实例
export const requestService = {get: customRequest(Method.Get),post: customRequest(Method.Post),put: customRequest(Method.Put),delete: customRequest(Method.Delete),
};
export { cancelRequest, requests };
http://www.bjxfkj.com.cn/article/109088.html

相关文章:

  • 网站开发与管理的专业描述免费logo设计模板
  • 沧州大型企业网站建设wordpress设置菜单跳转到锚
  • 有没有好一点的网站吐鲁番建设局网站
  • 深圳专业做网站建设wordpress外链图片备份
  • 建设银行u盾官方网站首页网站阵地建设管理办法
  • 深圳网站建设制作视频软件电商网站开发毕业设计
  • 怎样在百度做网站打广告南京做网站费用
  • 网站内容优化方法有哪些wordpress分类目录表
  • wordpress cpu突然深圳网站seo关键词
  • php程序员做企业网站自己电脑做网站服务器小工具
  • 创建公司网站 优帮云广州小程序软件开发
  • 工信部网站备案时间线上推广产品
  • 星空传媒有限公司网站wordpress导航仿制
  • 网站服务器无响应是怎么回事六安钢贴吧
  • 广州网站建设比较重庆市城市建设档案馆官方网站
  • 建网站的基本流程苏州市亿韵商务信息有限公司
  • 网站轮播动态图如何做建个网站需要服务器吗
  • 设计网站平台高清图片素材网
  • 备案官方网站推广一个网站需要什么
  • 商城类网站怎么推广wordpress的采集插件
  • 公司做网站宣传怎么做化妆品 网站模板
  • seo是搜索引擎优化东莞seo排名扣费
  • 青海城乡与建设厅网站建设网站需要那几部
  • 赤城seo网站优化排名网站建设招聘需求
  • 河南网站备案今天猪最新价格
  • p2p网站建设 上海网站做好了 怎么做解析
  • 长春网站优化指导网站设计步骤ppt
  • 响应式网站都有哪些建设一个自己的网站首页
  • form e哪个网站做营销型网站建设主要教学内容
  • 贵阳做网站哪家好手机网站制作吧