3

当我向后端发出请求时,我遇到了上述错误。我在另一个项目上有类似的代码,没有问题。但在这里它引起了问题

我的代码:

import axios from 'axios';
export default function apiCall(method, path, data) {
    console.log(method, url, data); 
    return new Promise((resolve, reject) => {
        return axios[method](path, data)
                .then(res => {
                    return resolve(res.data);
                })
                .catch((err) => {
                    console.log(err)
                    reject(err)
                });
    });
}

api调用函数

apiCall('POST', `${process.env.REACT_APP_BASE_URL}/`, {standard, subject, totalMarks, totalQuestions} )
        .then(data =>{
            console.log(data);

        })
        .catch(err=>{
            console.log(err);
            return this.props.addError(err.message)

        });
4

2 回答 2

2

请注意,javascript 中的对象区分大小写,因此,访问obj['post']并将obj['POST']返回不同的值。

axios 有方法getpost小写,你试图通过大写访问它们,因此你得到一个未定义的值。

您可以通过将方法变量转换为小写来解决此问题。

import axios from 'axios';

export default function apiCall(method, path, data) {
    return new Promise((resolve, reject) => {
        return axios[method.toLowerCase()](path, data)
                .then(res => {
                    return resolve(res.data);
                })
                .catch((err) => {
                    console.log(err)
                    reject(err)
                });
    });
}

顺便说一句,axios 方法已经返回Promises,因此您可以使用它使您的代码更简单一些。

import axios from 'axios';

export default function apiCall(method, path, data) {
    return axios[method.toLowerCase()](path, data)
           .then(res => res.data)
           .catch((err) => {
                console.log(err);
                return Promise.reject(err);
           });
}
于 2019-03-10T20:58:09.053 回答
0

我有同样的问题,felixmosh 给了我钥匙

const { data } = await axios.PUT(
     `/api/users/profile/update/`,
     user,
     config
     )

我修复了它,改变了方法,它对我有用;)

const { data } = await axios.put(
     `/api/users/profile/update/`,
     user,
     config
     )
于 2021-04-20T22:11:00.753 回答