Когда я «естественно» совершаю вызов 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 вызов завершается неудачно, а другой - успешно.