Axios Удалить запрос с телом и заголовками?
Я использую Axios при программировании в ReactJS, и я притворяюсь, что посылаю запрос DELETE на мой сервер.
Для этого мне нужны заголовки:
headers: {
'Authorization': ...
}
и тело состоит из
var payload = {
"username": ..
}
Я искал в веб-интерфейсах и обнаружил, что метод DELETE требует "param" и не принимает "данных".
Я пытался отправить его так:
axios.delete(URL, payload, header);
или даже
axios.delete(URL, {params: payload}, header);
Но ничего не работает...
Может ли кто-нибудь сказать мне, возможно ли это (я полагаю, это) отправить запрос DELETE как с заголовками, так и с телом и как это сделать?
Заранее спасибо!
Ответы
Ответ 1
Поэтому после нескольких попыток я обнаружил, что это работает.
Пожалуйста, следуйте порядку заказа, это очень важно, иначе это не сработает
axios.delete(
URL,
{headers: {
Authorization: authorizationToken
},
data:{
source:source
}}
);
Ответ 2
axiox.delete поддерживает тело запроса. Он принимает два параметра: url и необязательный config. Вы можете использовать config.data для установки тела и заголовков ответа следующим образом:
axios.delete(url, { data: { foo: "bar" }, headers: { "Authorization": "***" });
Смотрите здесь - https://github.com/axios/axios/issues/897
Ответ 3
Вот краткое описание форматов, необходимых для отправки различных http-глаголов с помощью axios:
Ответ 4
axios.delete передал URL и необязательную конфигурацию.
axios.delete(url[, config])
Доступные для конфигурации поля могут включать заголовки.
Это делает так, чтобы вызов API мог быть записан как:
const headers = {
'Authorization': 'Bearer paperboy'
}
const data = {
foo: 'bar'
}
axios.delete('https://foo.svc/resource', {headers, data})
Ответ 5
У меня была та же проблема, я решил ее так:
axios.delete(url, {data:{username:"user", password:"pass"}, headers:{Authorization: "token"}})
Ответ 6
Чтобы отправить HTTP DELETE с некоторыми заголовками через axios
я сделал следующее:
const deleteUrl = "http//foo.bar.baz";
const httpReqHeaders = {
'Authorization': token,
'Content-Type': 'application/json'
};
// check the structure here: https://github.com/axios/axios#request-config
const axiosConfigObject = {headers: httpReqHeaders};
axios.delete(deleteUrl, axiosConfigObject);
Синтаксис axios
для разных HTTP-глаголов (GET, POST, PUT, DELETE) сложный, потому что иногда 2-й параметр должен быть телом HTTP, в некоторые другие моменты (когда это может не понадобиться) вы просто передаете заголовки в качестве второго параметр.
Однако позвольте сказать, что вам нужно отправить HTTP POST-запрос без тела HTTP, тогда вам нужно передать undefined
как второй параметр.
Не забывайте, что в соответствии с определением объекта конфигурации (https://github.com/axios/axios#request-config) вы все равно можете передать тело HTTP в HTTP-вызове через поле data
при вызове axios.delete
, однако для глагола HTTP DELETE он будет проигнорирован.
Эта путаница между вторым параметром, который иногда является телом HTTP, и каким-то другим временем весь объект config
для axios
связан с тем, как были реализованы правила HTTP. Иногда тело HTTP не требуется для того, чтобы HTTP-вызов считался действительным.
Ответ 7
Я столкнулся с той же проблемой... Я решил ее, создав собственный экземпляр Axios. и используя это, чтобы сделать аутентифицированный запрос на удаление..
const token = localStorage.getItem('token');
const request = axios.create({
headers: {
Authorization: token
}
});
await request.delete('<your route>, { data: { <your data> }});
Ответ 8
Для удаления вам нужно будет сделать следующее
axios.delete("/<your endpoint>", { data:<"payload object">}})
Это сработало для меня.