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

Vue请求Django REST Framework接口返回结果与Postman不一致如何解决

问题原因

你拿到的返回对象是request库未执行完成的请求实例,不是接口返回的业务数据,核心错误有2点:

  • 异步请求逻辑错误写在了Vuex的mutations中,你直接将request.post()返回的请求对象赋值给了this.endpoint,没有等待请求响应返回就直接传递参数调用后续方法
  • Vuex的mutations仅支持同步状态修改,所有异步网络请求必须放到actions中执行
修复步骤

1. 配置Django跨域(必须项,否则浏览器会拦截跨域请求)

安装依赖:
pip install django-cors-headers
修改Django项目settings.py:

INSTALLED_APPS = [
    # ... 其他原有配置
    'corsheaders',
]

MIDDLEWARE = [
    # 放在最顶部
    'corsheaders.middleware.CorsMiddleware',
    # ... 其他原有配置
]

# 开发环境配置,生产环境请替换为你的前端域名
CORS_ALLOW_ALL_ORIGINS = True

2. 修正auth.js代码

将请求逻辑从mutations迁移到actions中,正确处理异步返回结果:

const actions = {
  async get_twitch_user_token_uri({ commit }) {
    commit(GET_TWITCH_TOKEN_URI);
    try {
      const url = "http://localhost:8000/api/auth/login";
      // 等待请求响应返回,拿到后端数据
      const response = await request.post(url);
      commit(GET_TWITCH_TOKEN, response.data);
      commit(GET_TWITCH_TOKEN_SUCCESS);
    } catch (err) {
      commit(GET_TWITCH_TOKEN_FAILURE);
      console.error('请求失败:', err);
    }
  },
}

const mutations = {
  [GET_TWITCH_TOKEN_URI](state) {
    state.authenticating = true;
    // 移除原有的请求逻辑
  },
  // 其余原有mutation保持不变
}

3. 可选校验项

确认你的request库实例配置了Content-Type: application/json请求头,否则POST请求可能无法被Django DRF正常解析;同时确认Django的views.py中已经导入from django.conf import settings,避免读取配置时报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:30:05