当前位置:   article > 正文

vue3 ts 使用axios_vue3 ts axios

vue3 ts axios

前言:

vite创建的项目,vue3使用axios,使用ts二次封装axios访问接口,并调用接口。

1、下载插件

npm install axios

2、引入插件

在使用的文件中引入

import axios from "axios";

3、使用插件

request.ts

  1. import axios from "axios";
  2. import { ElMessage } from 'element-plus'
  3. const service = axios.create({
  4. baseURL: import.meta.env.VITE_BASE_URL, // url = base url + request url
  5. timeout: 30000,// request timeout
  6. // withCredentials:true
  7. })
  8. // 请求拦截
  9. service.interceptors.request.use(
  10. (config: any) => {
  11. return config
  12. },
  13. (error: any) => {
  14. return Promise.reject(error)
  15. }
  16. )
  17. // 响应拦截
  18. service.interceptors.response.use(
  19. (response: any) => {
  20. const res = response.data
  21. if (res.code !== 1 || res.code !== 200) {
  22. return response.data
  23. } else {
  24. return response.data
  25. }
  26. },
  27. (error: any) => {
  28. if (error.response) {
  29. switch (error.response.status) {
  30. case 500:
  31. ElMessage({
  32. message: "服务器错误,请稍后重试",
  33. type: "error",
  34. duration: 5 * 1000
  35. })
  36. break
  37. default:
  38. if (error.response.data.error == "invalid_grant") {
  39. ElMessage({
  40. message: error.response.data.error_description,
  41. type: "error"
  42. })
  43. }
  44. return Promise.reject(error)
  45. }
  46. }
  47. }
  48. )
  49. export default service

4、封装axios

api.ts

  1. import request from "@/utils/request";
  2. export function getUniteLoginUrl(params: any) {
  3. return request({
  4. url: '/portal/user/getUniteLoginUrl',
  5. method: 'post',
  6. params
  7. })
  8. }

5、调用接口

需要调用api接口的文件,此为ts setup语法糖模式

  1. import {getUniteLoginUrl} from "@/api/api"
  2. import { onMounted } from "vue";
  3. onMounted(()=>{
  4. getUniteLoginUrl({type:'0'}).then((res: any)=>{
  5. console.log(res,"res====");
  6. })
  7. })

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/227593?site
推荐阅读
相关标签
  

闽ICP备14008679号