NodeJS 如何将Axios中具有相同键的多个值作为参数发送

5f0d552i  于 2022-12-03  发布在  Node.js
关注(0)|答案(2)|浏览(214)

我需要选择多个类别和子类别,并使用Axios将其ID作为查询字符串发送。假设用户选择了ID为1和2的2个类别,并从这两个类别中选择了ID为31和65的子类别,我希望请求URL如下:
https://example.com/api/data?categories=1,2&subCategories=31,65
如何实现这种所需的URL格式?

py49o6xq

py49o6xq1#

在这里,您可以尝试以下逻辑:(步骤):
1.npm i axios

const axios = require("axios");

async function Api() {
  const response = await axios.get("https://example.com/api/data", 
  { params: { categories: '1,2' , subCategories : '31,65'} })

  //receive data from request
  console.log(response.data);
  return response.data;
}

Api()
xxe27gdn

xxe27gdn2#

要使用axios发送查询字符串中同一个键的多个值,可以在传递给axios.get()方法的params对象中为该键指定一个值数组。例如,可以使用以下代码生成指定的URL:

const axios = require('axios');

const categories = [1, 2];
const subCategories = [31, 65];

const params = {
  categories: categories.join(','),
  subCategories: subCategories.join(','),
};

const url = 'https://example.com/api/data';

axios.get(url, { params });

这将生成如下所示的URL:

https://example.com/api/data?categories=1,2&subCategories=31,65

或者,您也可以使用URLSearchParams API来产生查询字串,并手动将它附加到URL。这可让您更直接地为同一个索引键指定多个值,而不必使用join()方法:

const axios = require('axios');

const categories = [1, 2];
const subCategories = [31, 65];

const searchParams = new URLSearchParams();
searchParams.append('categories', categories);
searchParams.append('subCategories', subCategories);

const url = 'https://example.com/api/data?' + searchParams.toString();

axios.get(url);

这也会生成与前面相同的URL:

https://example.com/api/data?categories=1,2&subCategories=31,65

相关问题