Axios Удалить запрос с телом и заголовками? - PullRequest
0 голосов
/ 27 июня 2018

Я использую Axios при программировании в ReactJS и делаю вид, что отправляю запрос DELETE на мой сервер.

Для этого мне нужны заголовки:

headers: {
  'Authorization': ...
}

и тело состоит из

var payload = {
    "username": ..
}

Я искал в интер-сетях и только обнаружил, что метод DELETE требует "param" и не принимает "data".

Я пытался отправить это так:

axios.delete(URL, payload, header);

или даже

axios.delete(URL, {params: payload}, header);

Но, похоже, ничего не работает ...

Может кто-нибудь сказать мне, возможно ли (я предполагаю, что это так) отправить запрос DELETE с заголовками и телом и как это сделать?

Заранее спасибо!

Ответы [ 8 ]

0 голосов
/ 19 мая 2019

Итак, после нескольких попыток я обнаружил, что это работает.

Пожалуйста, следуйте порядку заказа это очень важно, иначе это не сработает

axios.delete(
        URL,
        {headers: {
          Authorization: authorizationToken
        },
        data:{
          source:source
        }}
      );
0 голосов
/ 18 декабря 2018

У меня была такая же проблема, я решил ее так:

axios.delete(url, {data:{username:"user", password:"pass"}, headers:{Authorization: "token"}})
0 голосов
/ 27 февраля 2019

Для удаления вам нужно будет сделать следующее:

axios.delete("/<your endpoint>", { data:<"payload object">}})

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

0 голосов
/ 29 ноября 2018

Я столкнулся с той же проблемой ... Я решил это, создав собственный экземпляр axios. и используя это, чтобы сделать аутентифицированный запрос на удаление ..

const token = localStorage.getItem('token');
const request = axios.create({
        headers: {
            Authorization: token
        }
    });

await request.delete('<your route>, { data: { <your data> }});
0 голосов
/ 12 ноября 2018

Вот краткое изложение форматов, необходимых для отправки различных глаголов http с помощью axios:

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

    • Первый метод

    axios.get('/user?ID=12345')
      .then(function (response) {
        // Do something
      })
    
     
    • Второй метод

    axios.get('/user', {
        params: {
          ID: 12345
        }
      })
      .then(function (response) {
        // Do something
      })

Два выше эквивалентны. Соблюдайте ключевое слово params во втором методе

  • POST и PATCH

axios.post('any-url', payload).then(
  // payload is the body of the request
  // Do something
)

axios.patch('any-url', payload).then(
  // payload is the body of the request
  // Do something
)
  • DELETE

axios.delete('url', { data: payload }).then(
  // Observe the data keyword this time. Very important
  // payload is the request body
  // Do something
)

Ключ на вынос

  • get запросам необязательно нужен ключ params для правильной установки параметров запроса
  • delete запросы с телом должны быть установлены под ключом data
0 голосов
/ 08 октября 2018

Чтобы отправить HTTP-УДАЛЕНИЕ с некоторыми заголовками через 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, а в некоторых других случаях (когда это может не понадобиться) вы просто передаете заголовки как 2-й параметр.

Однако предположим, что вам нужно отправить запрос HTTP POST без тела HTTP, тогда вам нужно передать undefined в качестве второго параметра.

Имейте в виду, что в соответствии с определением объекта конфигурации (https://github.com/axios/axios#request-config) вы все равно можете передавать тело HTTP в вызове HTTP через поле data при вызове axios.delete, однако для HTTP DELETE глагол будет игнорироваться.

Эта путаница между вторым параметром, который иногда является телом HTTP, и другим временем, когда весь объект config для axios вызван тем, как были реализованы правила HTTP. Иногда тело HTTP не требуется, чтобы вызов HTTP считался действительным.

0 голосов
/ 27 июня 2018

axios. delete is передал URL и дополнительную конфигурацию .

axios.delete (url [, config])

Доступные для конфигурации поля могут включать заголовки .

Это позволяет записать вызов API следующим образом:

const headers = {
  'Authorization': 'Bearer paperboy'
}
const data = {
  foo: 'bar'
}

axios.delete('https://foo.svc/resource', {headers, data})
0 голосов
/ 27 июня 2018

axiox.delete поддерживает тело запроса. Он принимает два параметра: url и необязательный config. Вы можете использовать config.data для установки тела ответа следующим образом:

axios.delete(url, { data: { foo: "bar" } });

Смотрите здесь - https://github.com/axios/axios/issues/897

...