中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

濰坊做網(wǎng)站網(wǎng)站安全

濰坊做網(wǎng)站,網(wǎng)站安全,網(wǎng)站開速度 流失,什么渠道做網(wǎng)站建設(shè)通常在開發(fā)時(shí),后端向前端返回的數(shù)據(jù)可以如下: 1 使用restful api充分利用http狀態(tài)碼,然后在data中追加code字段,請(qǐng)求成功返回200,請(qǐng)求失敗返回404,401,500等狀態(tài)碼,并且在code字段中給出詳細(xì)的字符串信息2 再包一層&a…

通常在開發(fā)時(shí),后端向前端返回的數(shù)據(jù)可以如下:

  • 1 使用restful api充分利用http狀態(tài)碼,然后在data中追加code字段,請(qǐng)求成功返回200,請(qǐng)求失敗返回404,401,500等狀態(tài)碼,并且在code字段中給出詳細(xì)的字符串信息
  • 2 再包一層,所有請(qǐng)求不論失敗還是成功狀態(tài)返回均為200,然后在code中,返回實(shí)際的成功或失敗的原因(可以是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請(qǐng)求 */Get = 'GET',/** Post請(qǐng)求 */Post = 'POST',/** Put請(qǐng)求 */Put = 'PUT',/** Delete請(qǐng)求 */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';//  白名單列表,用于直接顯示前端定義的錯(cuò)誤
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);}}
};// 創(chuàng)建 axios 實(shí)例
const service = axios.create({baseURL: import.meta.env.DEV ? 'api-dev' : 'api-prod',timeout: 60000,
});// 請(qǐng)求攔截器
service.interceptors.request.use((config: AxiosRequestConfig) => {const { user } = useStore();// 請(qǐng)求自動(dòng)添加tokenif (user.token) {config.headers!.Authorization = `${localStorage.get('token')}`;}// 請(qǐng)求隊(duì)列,用于取消請(qǐng)求const controller = new AbortController();config.signal = controller.signal;requests.push({url: `${config.method}-${config.url}`,controller: controller,});return config;},error => {return Promise.reject(error);}
);// 響應(yīng)攔截器
service.interceptors.response.use((response: AxiosResponse) => {const { status } = response;if (status === 200) {switch (response.data.code) {case 200:return response.data;case 404:// 自定義的錯(cuò)誤碼,可以與http狀態(tài)碼一致,前后端約定即可// 同時(shí)根據(jù)錯(cuò)誤碼進(jìn)行跳轉(zhuǎn),清空緩存等動(dòng)作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]會(huì)被轉(zhuǎn)換為不同形式: indices轉(zhuǎn)換為'arg[0]=1&arg[1]=2'   brackets轉(zhuǎn)換為'arg[]=1&arg[]=2'  repeat轉(zhuǎn)換為'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 });// 為了不在每個(gè)請(qǐng)求后添加如下代碼,所以在此統(tǒng)一處理if (res.code === 200 && res.data) {return res.data;}throw res.msg;};
}// axios 實(shí)例
export default service;// 自定義axios 實(shí)例
export const requestService = {get: customRequest(Method.Get),post: customRequest(Method.Post),put: customRequest(Method.Put),delete: customRequest(Method.Delete),
};
export { cancelRequest, requests };
http://www.risenshineclean.com/news/52425.html

相關(guān)文章:

  • 國(guó)外有哪些做服裝的網(wǎng)站有哪些快速排序優(yōu)化
  • wordpress上傳.sh腳本寧波seo排名方案優(yōu)化公司
  • 自己做的網(wǎng)站首頁變成符號(hào)了天津百度seo推廣
  • 做設(shè)計(jì)有哪些好用的素材網(wǎng)站有哪些選擇寧波seo優(yōu)化公司
  • 響應(yīng)式網(wǎng)站建設(shè)案例淘寶數(shù)據(jù)查詢
  • wordpress能做app嗎seo賺錢
  • 網(wǎng)站開發(fā)屬于大學(xué)那個(gè)專業(yè)網(wǎng)站制作方案
  • 重慶做商城網(wǎng)站網(wǎng)絡(luò)營(yíng)銷推廣計(jì)劃書
  • 做文案策劃需要看什么網(wǎng)站地推團(tuán)隊(duì)如何收費(fèi)
  • 南京做企業(yè)網(wǎng)站博客營(yíng)銷案例
  • 用什么軟件開發(fā)手機(jī)appseo百度關(guān)鍵詞優(yōu)化軟件
  • 有域名沒有服務(wù)器怎么做網(wǎng)站seo優(yōu)化是什么職業(yè)
  • 如何做日本語網(wǎng)站百度品牌廣告
  • 網(wǎng)站換模板要怎么做app推廣賺傭金
  • 網(wǎng)站建設(shè)流程簡(jiǎn)圖獨(dú)立站推廣
  • 馬鞍山做網(wǎng)站公司排名廣州seo公司品牌
  • 做視頻點(diǎn)播網(wǎng)站如何賺錢seo云優(yōu)化方法
  • 科技未來網(wǎng)站建設(shè)東莞百度快照優(yōu)化排名
  • 中國(guó)和城鄉(xiāng)建設(shè)部網(wǎng)站首頁提高百度搜索排名工具
  • 蓬萊市住房和規(guī)劃建設(shè)管理局網(wǎng)站北京關(guān)鍵詞快速排名
  • 西昌市規(guī)劃建設(shè)局網(wǎng)站怎樣在百度上發(fā)布作品
  • 實(shí)驗(yàn)教學(xué)網(wǎng)站的建設(shè)研究短視頻seo排名加盟
  • 東莞網(wǎng)站建設(shè)aj工作室搜索引擎營(yíng)銷的主要方法
  • 聊城網(wǎng)站建設(shè)方案長(zhǎng)沙網(wǎng)站外包公司
  • 博彩網(wǎng)站做代理賺錢嗎廣州市口碑seo推廣
  • 設(shè)計(jì)公司企業(yè)定位桔子seo網(wǎng)
  • 海綿寶寶網(wǎng)頁設(shè)計(jì)素材南昌seo排名外包
  • 百科網(wǎng)站怎么做深圳網(wǎng)站優(yōu)化
  • 正規(guī)網(wǎng)站建設(shè)代理網(wǎng)店運(yùn)營(yíng)工作內(nèi)容
  • ios開發(fā)網(wǎng)站app全媒體運(yùn)營(yíng)師培訓(xùn)機(jī)構(gòu)