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:

  • GET: Два способа

    • Первый способ

    axios.get('/user?ID=12345')
      .then(function (response) {
        // Do something
      })
    
     

Ответ 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">}})

Это сработало для меня.