react+?ts?vite搭建及二次封裝請(qǐng)求的過程解析
1.搭建項(xiàng)目
npm create vite
2.下載axios
npm install axios
打開項(xiàng)目創(chuàng)建基本項(xiàng)目結(jié)構(gòu)
3.創(chuàng)建http文件夾下index.ts
引入axios
import axios, { AxiosResponse, AxiosInstance, InternalAxiosRequestConfig, } from "axios";
重新創(chuàng)建axios
const instance: AxiosInstance = axios.create({ baseURL: // vite 環(huán)境變量判斷 import.meta.env.MODE === "development" ? "/api" : import.meta.env.VITE_APP_BASE_URL, timeout: 10000, });
創(chuàng)建攔截器
instance.interceptors.request.use((config: InternalAxiosRequestConfig) => { //進(jìn)行特殊請(qǐng)求操作 return config; }); instance.interceptors.response.use((response: AxiosResponse) => { return response.data; });
封裝請(qǐng)求方法
export function get<T>( url: string, params?: CustomObject, config?: CustomObject ): Promise<ResultData> { return instance.get(url, { params, ...config }); } export function post<T>( url: string, params?: CustomObject, config?: CustomObject ): Promise<ResultData> { return instance.post(url, params, config); } export function put<T>( url: string, params?: CustomObject, config?: CustomObject ): Promise<ResultData> { return instance.put(url, params, config); }
導(dǎo)出
export default instance;
完整代碼
// http/index.ts import axios, { AxiosResponse, AxiosInstance, InternalAxiosRequestConfig, } from "axios"; const instance: AxiosInstance = axios.create({ baseURL: import.meta.env.MODE === "development" ? "/api" : import.meta.env.VITE_APP_BASE_URL, timeout: 10000, }); instance.interceptors.request.use((config: InternalAxiosRequestConfig) => { //進(jìn)行特殊請(qǐng)求操作 return config; }); instance.interceptors.response.use((response: AxiosResponse) => { return response.data; }); export function get<T>( url: string, params?: CustomObject, config?: CustomObject ): Promise<ResultData> { return instance.get(url, { params, ...config }); } export function post<T>( url: string, params?: CustomObject, config?: CustomObject ): Promise<ResultData> { return instance.post(url, params, config); } export function put<T>( url: string, params?: CustomObject, config?: CustomObject ): Promise<ResultData> { return instance.put(url, params, config); } export default instance;
使用
// api.ts import { get, post } from "../http/index"; // 文章列表 export const blogList = (data: CustomObject): Promise<ResultData> => get("/api/posts", data);
到此這篇關(guān)于react+ ts vite搭建及二次封裝請(qǐng)求的文章就介紹到這了,更多相關(guān)react二次封裝請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue2 Vue-cli中使用Typescript的配置詳解
Vue作為前端三大框架之一截至到目前在github上以收獲44,873顆星,足以說明其以悄然成為主流。下面這篇文章主要給大家介紹了關(guān)于Vue2 Vue-cli中使用Typescript的配置的相關(guān)資料,需要的朋友可以參考下。2017-07-07Vue實(shí)現(xiàn)訂單支付倒計(jì)時(shí)功能
這篇文章主要給大家介紹了Vue實(shí)現(xiàn)訂單支付倒計(jì)時(shí)功能,倒計(jì)時(shí)這要運(yùn)用在創(chuàng)建訂單后15分鐘內(nèi)進(jìn)行支付,否則訂單取消,本文結(jié)合示例代碼給大家詳細(xì)講解,需要的朋友可以參考下2023-08-08vue?this.$refs.xxx報(bào)錯(cuò)undefined問題及解決
這篇文章主要介紹了vue?this.$refs.xxx報(bào)錯(cuò)undefined問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03vue項(xiàng)目中axios如何捕捉http狀態(tài)碼為401錯(cuò)誤問題
這篇文章主要介紹了vue項(xiàng)目中axios如何捕捉http狀態(tài)碼為401錯(cuò)誤問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03Vue3使用dataV報(bào)錯(cuò)問題的解決方法
這篇文章主要為大家詳細(xì)介紹了Vue3中使用dataV報(bào)錯(cuò)問題的解決方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11vue3?vite異步組件及路由懶加載實(shí)戰(zhàn)示例
這篇文章主要為大家介紹了vue3?vite異步組件及路由懶加載實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06vue3如何將html元素變成canvas(海報(bào)生成),進(jìn)行圖片保存/截圖
這篇文章主要介紹了vue3實(shí)現(xiàn)將html元素變成canvas(海報(bào)生成),進(jìn)行圖片保存/截圖,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05