You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue-router跳转详情页后无法获取对应记录API响应的问题

解决Vue-Router详情页API请求404的问题

你遇到的核心问题是axios请求的URL没有正确解析路由参数,导致浏览器请求了一个不存在的字面量路径,直接返回404。下面是具体的修复步骤和细节说明:

问题根源

在GinsShow.vue的created钩子中,你把axios的请求地址写成了字符串'this.$route.params.slug'——浏览器会把这个字符串当作完整的URL去请求,而不是解析成路由参数对应的实际值。另外,请求也缺少了API的基础路径(比如后端接口的前缀),导致请求直接打到了前端服务的端口上。

修复后的代码

修改GinsShow.vue中的created部分:

<script>
import axios from 'axios'
export default {
  name: 'Gin-Show',
  data() {
    return {
      gin: [],
      errors: []
    }
  },
  created() {
    // 用模板字符串解析路由参数,同时补充API基础路径
    axios.get(`/api/gins/${this.$route.params.slug}`)
      .then(response => {
        this.gin = response.data
        console.log('获取到的详情数据:', response.data) // 用于调试确认
      })
      .catch(e => {
        this.errors.push(e)
        console.error('请求错误详情:', e) // 打印完整错误信息排查问题
      })
  }
}
</script>

关键说明

  1. 模板字符串的使用:用反引号``包裹URL,通过${变量}的方式插入路由参数this.$route.params.slug,这样才能正确解析出当前路由的slug值。
  2. API基础路径:请根据你的后端实际接口地址调整前缀,比如如果后端API运行在http://localhost:3000,那么应该写成axios.get(http://localhost:3000/gins/${this.$route.params.slug})。
  3. 调试辅助:在then和catch中添加日志,可以帮你快速确认参数是否正确传递、接口是否返回预期数据。

额外检查项

  • 确认后端已经实现了GET /gins/:slug的接口,并且可以正常返回单条记录数据;
  • 如果前后端分离部署,确保后端配置了跨域允许(CORS),避免请求被浏览器拦截;
  • 可以先在created钩子中打印console.log(this.$route.params),确认slug参数是否从列表页正确传递过来。

内容的提问来源于stack exchange,提问作者Simon Cooper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:26:11