Skip to content

buildQueryString

将对象转换为URL查询字符串

参数配置

=
=
=

选项

预设模板

生成结果

page=1&limit=10&search=hello%20world
长度: 36 字符

函数签名

typescript
interface BuildQueryStringOptions {
  prefix?: boolean
  skipNull?: boolean
}

function buildQueryString(
  params: Record<string, any>,
  options?: BuildQueryStringOptions
): string

参数

参数名类型必填说明
paramsRecord<string, any>参数对象
optionsBuildQueryStringOptions可选配置

BuildQueryStringOptions

属性名类型默认值说明
prefixbooleanfalse是否添加 ? 前缀
skipNullbooleantrue是否跳过 null 和 undefined 值

返回值

类型说明
string查询字符串

工作原理

  1. 遍历参数对象的所有键值对
  2. 根据 skipNull 选项决定是否跳过 null/undefined 值
  3. 对键和值进行 URL 编码
  4. = 连接键值对
  5. & 连接所有键值对
  6. 根据 prefix 选项决定是否添加 ? 前缀

使用示例

基本用法

typescript
buildQueryString({ foo: 'bar', baz: 'qux' })
// 'foo=bar&baz=qux'

buildQueryString({ foo: 'bar' }, { prefix: true })
// '?foo=bar'

处理特殊字符

typescript
buildQueryString({ 
  name: 'hello world',
  city: '北京'
})
// 'name=hello%20world&city=%E5%8C%97%E4%BA%AC'

处理空值

typescript
buildQueryString({ 
  foo: 'bar',
  baz: null,
  qux: undefined
})
// 'foo=bar'(默认跳过null和undefined)

buildQueryString({ 
  foo: 'bar',
  baz: null
}, { skipNull: false })
// 'foo=bar&baz=null'

构建完整URL

typescript
const baseUrl = 'https://api.example.com/users'
const params = { page: 1, limit: 10, role: 'admin' }
const queryString = buildQueryString(params, { prefix: true })
const fullUrl = baseUrl + queryString
// 'https://api.example.com/users?page=1&limit=10&role=admin'