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'