buildUrlParams
拼接URL参数,支持路径占位符 :xxx 替换 + 剩余参数转为queryString
引入版本
0.110.0
Demo
ts
import { buildUrlParams } from '@wyfex/iutils'
console.log('=========综合使用=========')
console.log(
buildUrlParams('/api/user/:id', { id: 16888, name: 'admin', type: [1, 2] })
)
// /api/user/16888?name=admin&type=1,2
console.log('\n=========基础使用=========')
console.log(buildUrlParams('/api/page', { current: 1, size: 10 }))
// /api/page?current=1&size=10
console.log('\n=========拼接使用=========')
console.log(buildUrlParams('/api/list?a=1', { b: 2 }))
// /api/list?a=1&b=2
console.log('\n=========参数带短横线情况=========')
console.log(
buildUrlParams('/api/user/:user-id', { 'user-id': 100, 'user-type': 2 })
)
// /api/user/100?user-type=2
console.log('\n=========无参情况=========')
console.log(buildUrlParams('/api/detail/:code', {}))
// /api/detail/:code
console.log('\n=========Url末尾带斜杠-默认不清理=========')
console.log(buildUrlParams('/api/test/:a/', { a: '' }))
// /api/test/:a/
console.log('\n=========Url末尾带斜杠-清理=========')
console.log(
buildUrlParams('/api/test/:a/', { a: '' }, { trimTrailingSlash: true })
)
// /api/test/:a
console.log('\n=====自动修剪首尾空格=====')
console.log(buildUrlParams('/api/test/:a', { a: ' abc ' }))
// /api/test/abc
console.log('\n=====关闭自动修剪首尾空格=====')
console.log(
buildUrlParams('/api/test/:a', { a: ' abc ' }, { trimString: false })
)
// /api/test/ abc
console.log('\n=========边界情况-数字0,正常替换=========')
console.log(buildUrlParams('/api/test/:a', { a: 0, b: 0 }))
// /api/test/0?b=0
console.log('\n=========边界情况-布尔值false,正常替换=========')
console.log(buildUrlParams('/api/test/:a', { a: false, b: false }))
// /api/test/false?b=false
console.log('\n=========边界情况-空字符串,保留占位符=========')
console.log(buildUrlParams('/api/test/:a', { a: '', b: '' }))
// /api/test/:a
console.log('\n=========边界情况-包含空格的空字符串,保留占位符=========')
console.log(buildUrlParams('/api/test/:a', { a: ' ', b: ' ' }))
// /api/test/:a
/**
* 边界情况-falsy值测试
*/
const falsyValues = { a: '', b: ' ', c: null, d: undefined, e: 0, f: false }
console.log('\n=========边界情况-falsy值测试,0和false正常保留=========')
console.log(buildUrlParams('/api/:a', falsyValues))
// /api/:a?e=0&f=false
console.log('\n=========边界情况-falsy值测试,全部保留=========')
console.log(
buildUrlParams('/api/:a', falsyValues, {
skipEmptyValue: false,
trimString: false
})
)
// /api/?b=%20%20%20%20%20&c=null&d=undefined&e=0&f=false