使用Axios发起GET请求时,能否将查询参数转为对象传递?
Axios传递查询参数对象的正确方式
这种用对象管理查询参数的方式完全可行,你之前的写法不生效是因为没搞对Axios GET请求的参数结构——查询参数对象必须放在请求配置的params属性里,而不是直接作为第二个参数传递。
正确实现代码
const url = `${BASE_URL}/courses`; // 无需手动加?,Axios会自动处理 const queryObj = { page: currentPage, count: contentCount, lastContentId: lastContentId, search: searchVal, }; axios.get(url, { params: queryObj }) .then((res) => console.log(res));
额外说明
- Axios会自动把
params对象转换成标准的URL查询字符串,还会自动处理参数值的URL编码,避免手动拼接时出现编码错误 - 如果某个参数值是
null或undefined,Axios会自动忽略这个参数,不会拼到URL里 - 要是你需要自定义参数序列化规则(比如数组的特殊格式),可以在配置里加
paramsSerializer字段来定制,比如:
axios.get(url, { params: queryObj, paramsSerializer: (params) => { // 示例:用qs库自定义数组序列化格式 return qs.stringify(params, { arrayFormat: 'brackets' }) } })
内容的提问来源于stack exchange,提问作者Aden Lee
相关产品推荐
相关产品推荐

