Skip to content

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

基于 MIT 许可发布