原生html+js 如何封装一个axios并引用
时间: 2023-03-07 15:17:41 浏览: 179
我可以给你一些指导:1. 首先,在你的HTML文件中引入Axios库;2. 然后,在你的JS文件中,使用Axios的get()/post()方法来发送请求;3. 最后,指定你想要的响应处理函数,来处理来自服务器的响应。
相关问题
二次封装一个axios并设置拦截器
好的,我可以帮你二次封装一个axios并设置拦截器。下面是一个示例代码:
```javascript
import axios from 'axios';
const instance = axios.create({
// 设置基本的请求配置,例如 baseURL, headers等
baseURL: 'https://api.example.com',
timeout: 5000,
headers: {
'Content-Type': 'application/json',
},
});
// 请求拦截器
instance.interceptors.request.use(
(config) => {
// 在发送请求之前做一些处理,例如添加认证信息、修改请求头等
// config.headers.Authorization = 'Bearer token';
return config;
},
(error) => {
// 错误处理
return Promise.reject(error);
}
);
// 响应拦截器
instance.interceptors.response.use(
(response) => {
// 对响应数据做一些处理,例如解析返回的数据
return response.data;
},
(error) => {
// 错误处理
return Promise.reject(error);
}
);
export default instance;
```
在上面的示例中,我们使用axios.create方法创建了一个axios实例,并设置了一些基本的请求配置。然后,我们通过instance.interceptors.request.use方法添加了一个请求拦截器,在发送请求之前可以对请求进行一些处理,例如添加认证信息。接着,我们通过instance.interceptors.response.use方法添加了一个响应拦截器,在接收到响应之后可以对响应数据进行一些处理,例如解析返回的数据。
你可以根据自己的需求修改和扩展这些拦截器的逻辑。希望对你有帮助!如果有任何问题,请随时提问。
vue 3 + ts 项目怎样封装axios 并封装get post 其你去
在 Vue 3 + TypeScript 项目中,可以通过以下步骤来封装 axios 并封装 get 和 post 请求:
1. 安装 axios 和 @types/axios:
```
npm install axios @types/axios
```
2. 创建 axios 实例
在 src 目录下创建一个 api 目录,并在其中创建一个 axios.ts 文件。在该文件中创建 axios 实例:
```typescript
import axios, { AxiosInstance } from 'axios'
const instance: AxiosInstance = axios.create({
baseURL: 'http://your.api.url', // 根据实际情况修改接口地址
timeout: 10000, // 请求超时时间
headers: {
'Content-Type': 'application/json;charset=utf-8'
}
})
export default instance
```
3. 封装 get 和 post 请求
在 api 目录下创建一个 request.ts 文件,并在其中封装 get 和 post 请求:
```typescript
import axios from './axios'
interface ResponseData<T> {
code: number;
message: string;
data: T;
}
export function get<T>(url: string, params?: any): Promise<T> {
return new Promise((resolve, reject) => {
axios.get<ResponseData<T>>(url, {
params
}).then(response => {
const res = response.data
if (res.code === 0) {
resolve(res.data)
} else {
reject(res.message)
}
}).catch(error => {
reject(error)
})
})
}
export function post<T>(url: string, data?: any): Promise<T> {
return new Promise((resolve, reject) => {
axios.post<ResponseData<T>>(url, data).then(response => {
const res = response.data
if (res.code === 0) {
resolve(res.data)
} else {
reject(res.message)
}
}).catch(error => {
reject(error)
})
})
}
```
在以上代码中,封装了一个 ResponseData 接口,该接口规定了接口返回数据的格式,包括 code、message 和 data 三个字段。封装的 get 和 post 方法返回一个 Promise 对象,resolve 时返回 data 字段的值,reject 时返回 message 字段的值。
4. 在组件中使用封装好的请求方法
在组件中引入封装好的请求方法,并使用:
```typescript
import { defineComponent, ref } from 'vue'
import { get, post } from '@/api/request'
export default defineComponent({
setup() {
const data = ref<any>(null)
// 发起 get 请求
get<any>('/api/getData').then(res => {
data.value = res
}).catch(err => {
console.log(err)
})
// 发起 post 请求
post<any>('/api/postData', { name: '张三', age: 18 }).then(res => {
console.log(res)
}).catch(err => {
console.log(err)
})
return {
data
}
}
})
```
在以上代码中,使用 ref 创建了一个 data 变量,用于存储 get 请求返回的数据。在 setup 函数中调用 get 和 post 方法,并在 then 和 catch 中处理请求成功和失败的逻辑。最后将 data 变量作为组件的返回值。
这样就完成了 axios 的封装和 get、post 请求的封装。在组件中使用封装好的请求方法,可以让代码更加简洁易懂,并且方便统一处理请求成功和失败的逻辑。