接口数据传过去就是账号不存在,我传给后台的数据是空的。

http

import axios from 'axios'; // 引入axios
import qs from 'qs'; // 第三方库

/*   根据环境变量区分接口默认地址   */
switch (process.env.NODE_ENV) {
    case "production": // 生产地址
        axios.defaults.baseURL = "";
        break;
    case "test": // 测试环境
        axios.defaults.baseURL = "";
        break;
    default: // 默认走本地开发环境
        axios.defaults.baseURL = "http://192.168.3.155:8877/api"
}

/*   设置超时时间和跨域是否允许携带凭证   */
// axios.defaults.timeout = 10000;
axios.defaults.withCredentials = true; 

/*   设置请求传递数据的格式  */
axios.defaults.headers['Content-Type'] = 'appliacation/x-www-form-urlencoded';
axios.defaults.transformRequest = function (data) {
    data = qs.stringify(data);
    // data = JSON.stringify(data);
    return data;
};

/*   设置请求拦截器   */
// TOKEN校验(JWT) 
axios.interceptors.request.use(config => {
    // 携带token 
    let token = localStorage.getItem('token'); 
    token && (config.headers.Authorization = token);
    return config;
}, error => {
    return Promise.reject(error);
});

/*   响应拦截器   */
axios.interceptors.response.use(response => {
    return response.data;
}, error => {
    let { response } = error;
    if (response) {
        // => 服务器返回了结果  500  服务器出现未知错误,一般不处理
        switch (response.status) {
            case 401: // => 权限
                break;
            case 403: // => (一般是TOKEN过期,session过期也有可能走这个)服务器已经理解请求,但是拒绝执行它
                break;
            case 404: // => 找不到页面
                break;
        }
    } else {
        if (!window.navigator.onLine) {
            return;
        }
        return Promise.reject(error);
    }
});

export default axios;

接口

import http from '../util/http';
function login(options) {
    return http.post('/prjUser/login', options)
}

function tree(options) {
    return http.get('/sysPermission/tree', options)
}

export default {
    login,
    tree
}

登录按钮,我每次登录不管改成json还是qs都是账号不存在,然后后端跟我说传的数据是空的。我这边接口写的是有问题吗?
image.png
image.png

image.png
image.png
image.png
qs格式
image.png
JSON格式
image.png

阅读 3.3k
5 个回答

proxy配置

proxy : {
    '/api' : { //PS:写错了不能带有正则
        target: "http://192.168.3.155:8877", // 代理接口 (注意只要域名就够了)
        changeOrigin: true, //是否跨域
        pathRewrite: {
           '^/api': '/api' //代理路径
        }
    }
}

ps:修改数据处理

1.表单格式

axios.defaults.headers['Content-Type'] = 'appliacation/x-www-form-urlencoded';

这样的请求头需要发送 account=18326173286&password=123 这样的数据格式

//修改代码
axios.defaults.transformRequest = function (data) {
    data = qs.stringify(data);
    return data;
};
  1. json格式
axios.defaults.headers['Content-Type'] = 'appliacation/json';

这样的请求头需要发送{"account":"18326173286","password":"123"} 这样的数据格式

//修改代码
axios.defaults.transformRequest = function (data) {
    data = JSON.stringify(data);
    return data;
};

首先你可以用postman测试下接口,看看接口是不是能正常请求。如果不行就是后端的问题。如果可以,你再看看你的network里面你的请求接口发出去的请求体有没有带上你的请求数据,还有看看发送的是什么类型的数据,看看你做的处理有没有生效,然后再做调整

先让后端提供接口文档,然后参考下后端的测试数据。你可以把后端提供的接口文档贴下

在network看下是否有入参,在看下请求头token是否有传

新手上路,请多包涵

感觉还是后台接收参数的格式与前台不对应,格式不对就直接进后台过滤器返回对应错误了。双方都可以改。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题