【问题标题】:Axios get with paramsaxios 获取参数
【发布时间】:2020-10-05 19:44:51
【问题描述】:

我正在尝试使用参数实现从 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)
      })

【问题讨论】:

  • 您还没有告诉我们您看到了什么错误,生成了什么 URL,您试图生成什么 URL。这里真的很难找出问题所在,更不用说它的原因或解决方案了。
  • 我在浏览器中没有错误,由于API请求而出现了加载器,但是我没有像直接使用Axios.get那样的任何结果。
  • 你为什么在这之后使用 async-await 和 .then()
  • 您尝试将参数传递给getFilteredProducts 函数,但它不接受任何参数

标签: javascript promise axios


【解决方案1】:

不清楚您要完成什么,但我认为您的功能应该是这样的:

使用异步/等待:

// 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);
})

请注意我传递给getFilteredProducts 方法的name 参数。以前这不存在,所以 String(name) 会产生一个空字符串 ""

【讨论】:

    猜你喜欢
    • 2019-02-20
    • 2021-08-17
    • 2021-11-30
    • 2022-12-01
    • 2021-12-19
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    相关资源
    最近更新 更多