在vue3+vite+ts項目中axios的封裝

直接上代碼

import { useUserStore } from '@/store'
import { ElMessage } from 'element-plus'
import type { Method, AxiosRequestConfig } from 'axios'
import axios from 'axios'

const server = axios.create({
  baseURL: '要替換的url',
  timeout: 5000
})
server.interceptors.request.use(
  (config) => {
    const store = useUserStore()
    let token = store.token
    if (token) {
      config.headers.Authorization = `Bearer ${token}`
    }
    return config
  },
  (err) => Promise.reject(err)
)

server.interceptors.response.use(
  (res) => {
    return res.data
  },
  (err) => {
    const store = useUserStore()
    if (err.response.data.code === '403' || err.response?.data?.msg === 'Token已過期') {
      // ElMessage.error(err.response?.data?.msg)
      store.logout()
    } else {
      ElMessage.error(err.response?.data?.msg)
    }
    return Promise.reject(err)
  }
)

type Data<T> = {
  code: string
  data: T
  message: string
  config?: AxiosRequestConfig
}

// 第一個T代表著我請求的返回的指定類型岭皂,第二個代表著 就是后端接口常見的返回格式 第三個攜帶的參數(shù)
 //第四個就是特殊的請求格式输涕,比如你要上傳圖片視頻 需要的格式是 'Content-Type': 'multipart/form-data'

const request = <T>(url: string, method: Method = 'get', submitData?: object, config?: object) => {
  const defaultConfig: AxiosRequestConfig = {
    url,
    method,
    // 區(qū)分get和其他請求post
    // get 提交數(shù)據(jù)潮饱,選項:params
    // 其他請求post 提交數(shù)據(jù)搓译,選項:data
    [method.toLowerCase() === 'get' ? 'params' : 'data']: submitData
    // ...(其他默認(rèn)配置从隆,如果有的話)
  }
  const finalConfig = Object.assign({}, defaultConfig, config)

  return server.request<T, Data<T>>(finalConfig)
}

export { server, request }

在你封裝的api請求中這樣使用:

import { request } from '@/utils/request'
import type { GoodsResult, GoodsItem, GoodsDetailsResult, GoodsSelectTypeItem, AddGoodsParams } from '@/types/goods'

// 獲取分類的全部商品
export const getGoodsTotal = (params: { categoryId: string }) => {
return request<GoodsItem[]>('/fly-code/productInfo/list', 'get', params)
}

// 購買商品
export const buyGoods = (data: { productId: number; quantity: number }) => {
return request('/fly-code/order/add', 'post', data)
}

// 上傳商品圖片
export const uploadGoodsImg = (data: FormData) => {
return request<string>('/fly-code/user/upload', 'post', data, { 'Content-Type': 'multipart/form-data' })
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抵卫,一起剝皮案震驚了整個濱河市锅必,隨后出現(xiàn)的幾起案子架专,更是在濱河造成了極大的恐慌倒槐,老刑警劉巖旬痹,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異讨越,居然都是意外死亡两残,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門把跨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來人弓,“玉大人,你說我怎么就攤上這事节猿∑贝樱” “怎么了漫雕?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長峰鄙。 經(jīng)常有香客問我浸间,道長,這世上最難降的妖魔是什么吟榴? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任魁蒜,我火速辦了婚禮,結(jié)果婚禮上吩翻,老公的妹妹穿的比我還像新娘兜看。我一直安慰自己,他們只是感情好狭瞎,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布细移。 她就那樣靜靜地躺著,像睡著了一般熊锭。 火紅的嫁衣襯著肌膚如雪弧轧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天碗殷,我揣著相機(jī)與錄音精绎,去河邊找鬼。 笑死锌妻,一個胖子當(dāng)著我的面吹牛代乃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播仿粹,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼搁吓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了牍陌?” 一聲冷哼從身側(cè)響起擎浴,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎毒涧,沒想到半個月后贮预,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡契讲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年仿吞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捡偏。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡唤冈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出银伟,到底是詐尸還是另有隱情你虹,我是刑警寧澤绘搞,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站傅物,受9級特大地震影響夯辖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜董饰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一蒿褂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧卒暂,春花似錦啄栓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至诈嘿,卻和暖如春桂肌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背永淌。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留佩耳,地道東北人遂蛀。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像干厚,于是被迫代替她去往敵國和親李滴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容