Я унаследовал кодовую базу с использованием Ax ios, и в остальном я не знаком с библиотекой. Это приложение Node, и я пытаюсь отправить запрос PATCH к стороннему API. Ax ios настраивается следующим образом:
const axios = require('axios').create({
baseURL: process.env.API_URL,
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
auth: {
username: process.env.API_USER,
password: process.env.API_PW,
},
});
Затем я пытаюсь выполнить следующий запрос PATCH:
const data = {
fields: {
field_a: 'yes',
field_b: 'no',
},
};
try {
const res = await axios.patch(`/user/${user.id}`, data, {
headers: {
'Content-Type': 'application/json'
}
});
return res;
} catch (err){
console.error(err);
}
Из того, что я вижу, я просто переопределяю Content -Введите заголовок при вызове патча, но это была просто попытка понять это. В любом случае это не работает. В свойстве config объекта ответа я вижу следующее (большая часть исключена):
{
headers: {
Accept: "application/json"
User-Agent: "axios/0.19.0"
},
method: 'patch',
}
Глядя на свойство запроса того же объекта ответа, я вижу, что метод там указан как «GET "с заголовком Content-Type, которого там нет. Похоже, что заголовок Content-Type удаляется, а метод изменяется на GET.
Если я ничего не меняю, кроме целевого URL-адреса на /userWRONGPATH/${user.id}
, я получаю, как и ожидалось, ответ 404, но данные конфигурации объекта ответа включают следующее:
{
headers: {
Accept: "application/json"
Content-Length: 105
Content-Type: "application/json"
User-Agent: "axios/0.19.0"
}
}
Метод запроса объекта ответа теперь является ожидаемым PATCH. Я не уверен, почему метод patch будет работать для других путей, если это действительно то, что здесь происходит.