Axios условные параметры - PullRequest
       1

Axios условные параметры

0 голосов
/ 13 сентября 2018
axios.get(globalConfig.FAKE_API, {
    params: {
        phone: this.phone,
        mail: this.mail
    },
})
.then((resp) => {
    this.req = resp.data
 })
.catch((err) => {
     console.log(err)
 })

Можно ли как-то сделать условные параметры при выполнении запросов GET / POST с Axios?Например, если мой параметр mail пуст, я не отправлю пустой параметр, например: someurl.com?phone=12312&mail=

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Идея Регхава Гарга выглядит на первый взгляд изящной, но, боюсь, с более чем одним необязательным параметром она станет грязной.

Вы можете просто использовать одну из распространенных служебных библиотек, таких как подчеркивание или lodash, и использовать их функцию filter:

const allParams = {
    mail: this.mail,
    phone: this.phone,
    // ...
};
axios.get(globalConfig.FAKE_API, {
   // 'Pick' takes only those elements from the object
   // for which the callback function returns true
   //
   // Double negation will convert any value to its boolean value,
   // so null becomes false etc.
   params: _.pick(allParams, (value, key) => { return !!value; })
})
0 голосов
/ 13 сентября 2018

Либо вы можете сохранить переменную params перед выполнением запроса и добавлять ключ только в том случае, если он имеет такие данные, как:

const params = {}
if (this.mail) { params.mail = this.mail }

или вы можете сделать, как показано ниже, мы пишем нормальный код JS между ...() в скобках. Мы добавляем троичное условие.

axios.get(globalConfig.FAKE_API, {
  params: {
    phone: this.phone,
    ...(this.mail ? { mail: this.mail } : {})
  },
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...