Axios получает с помощью параметров

#javascript #promise #axios

#javascript #обещание #axios

Вопрос:

Я пытаюсь реализовать получение данных из API с помощью параметров. У меня есть две функции для этого, и я не вижу ошибки. Есть идеи?

 getFilteredProducts() {
    return apiClient.get('/product/', {
      params: {
        search: String(name)
      }
    })
  }
  
 async fetchFilteredProducts({ commit }, name) {
      await productService.getFilteredProducts({name})
      .then(response => {
        commit('SET_FILTERED_PRODUCTS', response.data.items)
      })
      .catch(error => {
        console.log('Error has occured'   error)
      })
    }
  

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

 async fetchFilteredProducts({ commit }, name) {
      await axios.get("MY_API_URL/product/", {
        params: {
          search: String(name)
        }
      })
      .then(response => {
        commit('SET_FILTERED_PRODUCTS', response.data.items)
      })
  

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

1. Вы не сказали нам, какие ошибки вы видите, какой URL-адрес генерируется, какой URL-адрес вы пытались сгенерировать. Здесь действительно сложно определить проблему, не говоря уже о ее причине или решении.

2. У меня нет ошибки в браузере, загрузчик появляется из-за запроса API, но у меня нет никакого результата, подобного использованию Axios.get напрямую.

3. Почему вы используете async-await и .then() после этого?

4. Вы пытаетесь передать параметры getFilteredProducts функции, но она не принимает никаких

Ответ №1:

Неясно, чего вы пытаетесь достичь, но я думаю, что ваши функции должны быть такими:

Использование Async / Await:

 // Your Service
async getFilteredProducts(name) {
  return await apiClient.get('/product/', {
    params: {
      search: String(name)
    }
  })
}

// Using Your Service
async someParentFunction() {
    const response = await getFilteredProducts("John")
    console.log(response.data);
}
  

Использование обещаний:

 // Your Service
getFilteredProducts(name) {
  return apiClient.get('/product/', {
    params: {
      search: String(name)
    }
  })
}

// Using Your Service
getFilteredProducts("John").then((response) => {
    console.log(response.data);
})
  

Обратите внимание на name параметр, который я передаю getFilteredProducts методу. Ранее этого не было, поэтому String(name) получалась пустая строка "" .