无法获取/ teachers / [object%20Object]

时间:2019-03-12 05:11:15

标签: reactjs axios

axios正在创建或重定向到此奇怪的URL。我不知道怎么回事。我还检查了此处可用的其他解决方案,但没有帮助。 我还使用公共api网址进行了检查,但它已重定向到相同的网址。
我正在从https://d52890213a1f40e2b2XXXXXXX5ab4e.vfs.cloud9.ap-southeast-1.amazonaws.com:8081/teachers

发出请求

axios方法:

export function apiCall(method, url, data) {
    console.log(method, url, data)
    debugger
    return axios[method]({
            url,
            params: { origin: "*" },
            data
        })
        .then(res => {
            console.log(res);
            return res.data;
        })
        .catch((err) => {
            if (err.response) {
                // debugger
                return Promise.reject(err.response.data);
            }
            else if (err.request) {
                // debugger
                return Promise.reject(err);
            }
            else {
                // debugger
                return Promise.reject(err);
            }
        });
}

控制台输出

get https://d52890213a1f40e2b2XXXXXXX5ab4e.vfs.cloud9.ap-southeast-1.amazonaws.com:8080/api/questionset undefined

调用功能

componentDidMount(){
        apiCall('get', `${process.env.REACT_APP_BASE_URL}/api/questionset`)
        // apiCall('get', `https://randomuser.me/api/`, undefined)
            .then(data =>{
                console.log(data);
                if(!data.success){
                    throw Error(data.message);
                }
                else{
                    this.setState({
                        isLoading: false,
                        questionSets: data.questionSets
                    })
                }    
            })
            .catch(err=>{
                debugger
                console.log(err);
                this.setState({
                    isLoading: false
                })
                return this.props.addError(err.message)

            });
    }

错误:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /teachers/[object%20Object]</pre>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

如何尝试使用Promise?

export function apiCall(method, url, data) {
  return new Promise((resolve, reject) =>
    axios({
      method,
      url,
      params: { origin: "*" },
      data
    })
      .then(res => {
        resolve(res.data)
      })
      .catch((err) => {
        if (err.response) {
          // debugger
          reject(err.response.data);
        }
        else if (err.request) {
          // debugger
         reject(err);
        }
        else {
          // debugger
         reject(err);
        }
      })
  )
}