# url.build ## 功能 从对象配置构建 URL 字符串。 ## 语法 ```bt url(config).build() url('').build(config) ``` ## 参数 | 参数 | 类型 | 必填 | 默认值 | 说明 | | ------ | ------ | ------ | ------ | ------ | | config | Object | 否 | 构造 url 时传入的对象 | URL 配置对象。 | ## config 对象字段 | 字段 | 类型 | 必填 | 默认值 | 说明 | | ------ | ------ | ------ | ------ | ------ | | scheme | String | 否 | `http` | URL scheme,不需要写 `://`。 | | host | String | 否 | 空字符串 | 主机名或 IP。没有 host 时仍会按当前实现生成 `scheme://` 开头的 URL。 | | port | Int/String | 否 | 无 | 端口号。字段值不是 `empty` 或 `null` 时会原样转字符串拼到 host 后。 | | path | String | 否 | `/` | URL 路径。不以 `/` 开头时会自动补 `/`。 | | query | Object/String/Any | 否 | 无 | 查询字符串。Object 会按键值逐项 URL 编码;String 原样作为查询字符串;其它值先转字符串。空字符串不会写入 `?`。 | | fragment | String | 否 | 无 | URL fragment,不需要写 `#`;写入时会做百分号编码。 | | username | String | 否 | 无 | 用户名。非空时会写入 `username@`,并做百分号编码。 | | password | String | 否 | 无 | 密码。只有 `username` 非空时才会写入,并做百分号编码。 | ## 返回值 | 类型 | 说明 | | ------ | ------ | | String | 构建后的 URL。 | ## 代码示例 ```bt result = url({scheme: 'https', host: 'btlang.org', path: '/zh-hans/docs/index', query: {q: 'BT Lang'}}).build() // 输出:https://btlang.org/zh-hans/docs/index?q=BT%20Lang print result ``` ## 注意事项 - `query` 为 Object 时,字段名和值都会按 URL 组件规则编码。 - `build()` 只做轻量字符串构建,不校验 host 是否为空,也不检查 scheme 是否真实存在。