需求:
假设有个一变量
params = {
a: 1
b: '',
c: '铁公鸡'
}
想拼接在已知url='http://localhost:8080/api/get/'
后面,变成
http://localhost:8080/api/get/?a=1&b=&c=xxx
方案一:采用axios
import axios from 'axios'
let url='http://localhost:8080/api/get/'
const params = {
a: 1,
b: '',
c: '铁公鸡'
}
url = axios.getUri({ url, params })
console.log(url)
方案二:自己手动拼接
let url='http://localhost:8080/api/get/'
const params = {
a: 1,
b: '',
c: '铁公鸡'
}
url = url + '?' + Object.keys(params).map(i => `${i}=${encodeURIComponent(params[i]||'')}`).join('&')
console.log(url)
// http://localhost:8080/api/get/?a=1&b=&c=%E9%93%81%E5%85%AC%E9%B8%A1
明明这么简单的功能,为什么搜索到的解决方案,大部分是很多行代码的呢,奇怪。
附:对于axios
方案,如果变量名不是url和params,则需这样调用:
const path = 'https://api.com/path'
const query = {'a': null, 'b': undefined, 'c': false, 'd': '中文', 'e': '', 'f': 0}
const fullUrl = axios.getUri({ url: path, params: query })
console.log(fullUrl)
// https://api.com/path?c=false&d=%E4%B8%AD%E6%96%87&e=&f=0