【问题标题】:axios multipe param requestaxios 多参数请求
【发布时间】:2022-01-11 12:27:03
【问题描述】:

我正在尝试使用 axios 和参数进行查询 当我执行此代码时:

axios.get('/myApi', { params: { id: [1,2,3] })

这会将所有内容放在同一个网址中

http://localhost/api/myApi?id[]=1&id[]=2&id[]=3

知道我的输入表是动态的,每次我都会收到不同的请求吗?

我想要这个动态:

http://localhost/api/myApi?id[]=1
http://localhost/api/myApi?id[]=3
http://localhost/api/myApi?id[]=3
...

提前致谢

【问题讨论】:

  • 是的,您可以通过循环执行此操作。

标签: javascript axios nuxt.js


【解决方案1】:

不,但您可以遍历该 url 参数并使用 axios 请求它,例如:-

for (let i = 0; i < id.length; i++) {
  axios.get('/myApi', { params: { id: [i] })
}

【讨论】:

    【解决方案2】:

    不,你必须自己做,通过发出多个请求。

    您可以为此使用 Promise.all 和 map。

    map 用于对传递的 id 发出单独的请求,并将axios 返回的 Promise 存储在一个数组中。 和Promise.all 等待他们全部解决。

    function batchRequest(ids) {
       return Promise.all(ids.map( id => {
          return axios.get('/myApi', { params: { id: [id] }})
       }))
    }

    【讨论】:

    • 如何用这种方法将数据保存到数组中?
    • @HeurtaultAubin batchRequest 返回一个带有数组的 Promise,其中包含由 axios.get 解析为返回的 Promise 的结果。因此,使用 batchRequest([1,2,3]).then(results =&gt; console.dir(results)) 或 console.dir(await batchRequest([1,2,3])) 会记录一个包含这些结果的数组。
    猜你喜欢
    • 2019-03-05
    • 2020-01-17
    • 2019-02-28
    • 2021-12-29
    • 2021-11-23
    • 2020-02-19
    • 1970-01-01
    • 2019-05-06
    • 2020-02-05
    相关资源
    最近更新 更多