当我请求后端时,我遇到了错误。我在另一个项目上有类似的代码,没有问题。但这会引起问题
我的代码:
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)
});
答案 0 :(得分:0)
请注意javascript中的对象区分大小写的事实,因此,访问obj['post']
和obj['POST']
将返回不同的值。
axios具有方法get
,post
等,以小写表示,您正尝试通过大写访问它们,因此您得到了未定义的值。
您可以通过将方法变量转换为小写来解决此问题。
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);
});
}
答案 1 :(得分:0)
我遇到了同样的问题,felixmosh 给了我钥匙
const { data } = await axios.PUT(
`/api/users/profile/update/`,
user,
config
)
我修复了它,改变了方法,它对我有用;)
const { data } = await axios.put(
`/api/users/profile/update/`,
user,
config
)