vue 动态路由 axios 访问路径变化

在编写vue3+vite项目时,使用动态路由访问axios请求路径发生错误,会额外加一个我们的动态路由路径进来,这不是我们想要的结果,问题如下:

vite.config.js

server:{
    proxy:{
      '/api':{
        target:'http://**.**.**.**:**/api',
        changeOrigin:true,
        secure: false,

        rewrite:path=>path.replace(/^\/api/,'')
      }

    }
  },

子组件:paperdetail.vue

function init(){
  console.log(route.params.id)
  axios.get('api/v1/wallpaper/').
  then(res => {
    console.log(res.data)
  subNum.value = res.data.data.subNum
  likeNum.value = res.data.data.likeNum
  visitNum.value = res.data.data.visitNum
  commentNum.value = res.data.data.commentNum
})
}

路由实现 router.js


 {
      path: '/wallpaper/:id',
      component: () => import('../views/paperDetail.vue')
    },

若如此做,在访问paperdetail时(http://*.*.*.*:*/wallpaper/1223445),会自动加载init函数,访问的路径会莫名其妙添加一个wallpaper进来

如  GET http://127.0.0.1:5173/wallpaper/api/v1/wallpaper/ 404 (Not Found)

而不是我们想要的 http://127.0.0.1:5173/api/v1/wallpaper/

而且在后续的探究中,我发现这个会变化的路径与我们的动态路由相关,我们更改这个wallpaper为paper,这个会变化的路径也变为了paper,于是定位错误,开始解决

解决方案

将paperDetail中的请求改为如下,将路径前面加一个 , 这是绝对路径与相对路径的问题。

function init(){
  console.log(route.params.id)
  axios.get('/api/v1/wallpaper/').
  then(res => {
    console.log(res.data)
  subNum.value = res.data.data.subNum
  likeNum.value = res.data.data.likeNum
  visitNum.value = res.data.data.visitNum
  commentNum.value = res.data.data.commentNum
})
}

关于绝对路径与相对路径的知识请见:vue项目中使用axios遇到的相对路径和绝对路径问题 (wuyaogexing.com)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值