Запрос на получение Axios получает ошибку 401, но затем успешно завершается, когда я обновляю страницу - PullRequest
0 голосов
/ 28 мая 2019

Когда я «естественно» совершаю вызов API, например, нажимая «My Inventory», который отправляет запрос на получение api.mysite.com/api/inventory/uuid/, происходит сбой с ошибкой 401. Однако, когда я нахожусь на этой странице и обновляю ее, вдруг все это работает (хотя мой метод .catch все еще срабатывает, предполагая, что произошла ошибка ?!) Вот мой код:

    config = {
        headers:{
            'Authorization' : 'Token ' + localStorage.getItem('token')
        }
    }

Это мой запрос на получение axios:

        axios.get(this.url, this.config.headers)
            .then(res => {
                this.setState({
                    products: res.data
                })
                if (res.data.length > 0) {
                    if (!res.data[0].is_owner) {
                        this.setState({
                            inventory_owner: res.data[0].user_name,
                            is_owner: res.data[0].is_owner
                        })
                    }
                }
            })
            .catch(res => {
                console.log("error it didnt work "+res.response.data.detail)

            })

Когда я писал этот вопрос, я заметил, что второй вызов поступает не из обновления, а из componentWillReceiveProps, который в качестве следующего кода (в значительной степени идентичен)

    componentWillReceiveProps() {
        const path = this.props.history.location.pathname
        if (path === '/inventory') {
            this.url = 'https://api.mysite.com/api/inventory/'
        }
        else {

            if(this.param1.length>12){
                this.param1 = this.param1
            }
            else{
            this.param1 = path[path.length - 1]
            }
            this.url = 'https://api.mysite.com/api/inventory/' + this.param1
        }
        axios.get(this.url, this.config)
            .then(res => {
                console.log("this work tho")
                console.log("the url "+this.url)
                console.log("the config "+this.config.headers.Authorization)
                this.setState({
                    products: res.data
                })
            })
    }

консоль выводит идентичные значения для url и config, поэтому я не уверен, почему 1 вызов завершается неудачно, а другой - успешно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...