Передача параметров для POST-вызова с помощью axios

#javascript #axios

#javascript #axios

Вопрос:

Я пытаюсь добавить следующий параметр запроса в свой вызов axios, но по какой-то причине он его не принимает.

 const config = {
  headers: {
    'Content-Type': 'application/json',
  }
}

const params = {
  params: {
    isAccepted: true
  }
}

const url = `https://testapi.com`
axios.post(url, params, config)
  

Однако он отлично работает, когда я делаю это в этом формате

 const config = {
  headers: {
    'Content-Type': 'application/json',
  }
}

const url = `https://testapi.com?isAccepted=true`
axios.post(url, params, config)
  

Я неправильно использую поле параметров в вызове axios?

Комментарии:

1. параметры запроса добавляются только к URL-адресу в строке запроса для GET запросов, поскольку POST они включены в тело запроса. Разумный API не должен обращать внимания на параметры запроса в URL POST -адресе запроса.

2. Да, вы должны добавить параметры таким образом *** const params = { isAccepted: true } ***

3. @RobinZigmond Итак, в моем случае POST обращаем внимание на параметры запроса. Что мне делать в этом случае?

4. Что не так с вашим вторым фрагментом, который, по вашим словам, работает?

5. Вам не нужно устанавливать Content-type: application/json заголовок, поскольку он используется по умолчанию

Ответ №1:

‘Как видно из документации, запрос axios post может принимать параметры в конфигурации. Вы пытаетесь передать параметры в том месте, где должен быть ваш объект post (данные). Однако параметры могут быть включены в конфигурацию.

axios.post(url[, data[, config]])

Вот документация. https://github.com/axios/axios#axios-api

Попробуйте реструктурировать код следующим образом

 const config = {
  headers: {
    'Content-Type': 'application/json',
  },
  params: {
     isAccepted: true
  }
}

const data = {
   data: 'whatever'
}

axios.post(url, data, config)