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

Vue.js中调用GraphQL接口报404,无法发起mutation请求该怎么解决?

问题原因
  • 核心原因:报错栈中出现MockAdapter标识,说明项目本地配置了mock拦截服务,该请求被mock服务拦截,没有发送到真实的后端服务,mock服务未匹配到该接口规则因此返回404状态码。
  • 次要原因:请求的query构造存在语法错误,username: this. 缺少对应的属性名(如this.username),会导致请求体格式错误。
  • 潜在问题:请求的URL存在拼写错误风险,域名部分的grapql为错误拼写,正确应为graphql,同时需确认接口路径/authgraphql是否和后端提供的端点一致。
解决方案
  • 处理mock拦截:找到项目中mock服务的配置项,将当前GraphQL接口加入到mock白名单,或者临时关闭mock服务,让请求可以正常发送到真实后端。
  • 修复query语法错误:补全username对应的取值属性,同时为了避免模板字符串中this指向异常,建议提前提取变量再拼接query,参考修改后的代码如下:
// 提前提取变量,避免this指向问题
const loginUsername = this.username
const loginPassword = this.password

axios({
  url: "https://indev-xyz-graphql.herokuapp.com/authgraphql", // 修复域名拼写错误
  method: 'post',
  headers: {
    'Content-Type': 'application/json' // 明确指定请求头,适配GraphQL接口要求
  },
  data: {
    query: `mutation{
      tokenAuth(username: "${loginUsername}", password: "${loginPassword}") {
        token
        success
        errors
      }
    }`
  }
}).then((result) => {
  console.log('请求返回结果:', result.data)
}).catch((err) => {
  console.error('请求捕获错误:', err)
})
  • 验证接口可用性:可以先通过Postman、Apifox等接口测试工具,直接向后端地址发起测试请求,确认接口地址、请求格式正确,能够正常返回结果。
  • 可选优化:如果项目中GraphQL请求较多,建议使用专门的GraphQL客户端(如Apollo Client)替代原生axios,可自动处理请求格式、缓存等问题,降低出错概率。

内容的提问来源于stack exchange,提问作者Jaydeep Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:24:09