目录

类

class Form

public class Form {
    public init()
    public init(queryComponent: String)
}

功能:Form 以 key-value 键值对形式存储 http 请求的表单信息,通常为请求 URL 中的 query 部分。

同一个 key 可以对应多个 value, value 以数组形式存储。'&' 符号分隔多个键值对;'=' 分隔的左侧作为 key 值,右侧作为 value 值(没有 '=' 或者 value 为空,均是允许的)。

[h2]init()

public init()

功能:构造一个默认的 Form 实例。

[h2]init(String)

public init(queryComponent: String)

功能:根据 URL 编码的查询字符串,即 URL 实例的 query 部分构造 Form 实例。

解析 URL 编码的查询字符串,得到若干键值对,并将其添加到新构造的 Form 实例中。

参数:

异常:

[h2]func add(String, String)

public func add(key: String, value: String): Unit

功能:新增 key-value 映射, 如果 key 已存在,则将 value 添加到原来 value 数组的最后面。

参数:

[h2]func clone()

public func clone(): Form

功能:克隆 Form。

返回值:

[h2]func get(String)

public func get(key: String): Option<String>

功能:根据 key 获取第一个关联的 value。

举例:

参数:

返回值:

[h2]func getAll(String)

public func getAll(key: String): ArrayList<String>

功能:根据 key 获取所有关联的 value。如果找不到该 key,返回空数组。

参数:

返回值:

[h2]func isEmpty()

public func isEmpty(): Bool

功能:判断 Form 是否为空。

返回值:

[h2]func remove(String)

public func remove(key: String): Unit

功能:删除 key 及其对应 value。

参数:

[h2]func set(String, String)

public func set(key: String, value: String): Unit

功能:重置指定 key 对应的 value。

参数:

[h2]func toEncodeString()

public func toEncodeString(): String

功能:对表单中的键值对进行编码。未保留字符 unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" 不会被编码,空格将编码为 '+'。

返回值:

class URL

public class URL <: ToString {
    public init(scheme!: String, hostName!: String, path!: String)
}

功能:该类提供解析 URL 的函数以及其他相关函数。

字符串中的百分号%编码会被解码,保存在相应的组件之中,而初始值保存在相应的 raw 属性之中。URL 中的用户名和密码部分(如果存在的话)也会按照 rfc3986 协议的说明被解析。

暂时未提供各组件单独的编解码功能。

rfc3986 明确说明在任何场景下,明文保存用户信息都有被泄露的风险,所以我们不建议您在 URL 中明文保存用户信息,这不安全!

[h2]prop fragment

public prop fragment: ?String

功能:获取解码后的锚点组件,用字符串表示。

类型:?String

[h2]prop hostName

public prop hostName: String

功能:获取解码后的主机名,用字符串表示。

类型:String

[h2]prop opaque

public prop opaque: String

功能:获取 URL 中不透明部分,用字符串表示。

类型:String

[h2]prop path

public prop path: String

功能:获取解码后的路径,用字符串表示。

类型:String

[h2]prop port

public prop port: String

功能:获取端口号,用字符串表示,空字符串表示无端口号。

类型:String

[h2]prop query

public prop query: ?String

功能:获取解码后的查询组件,用字符串表示。

类型:?String

[h2]prop queryForm

public prop queryForm: Form

功能:获取解码后的查询组件,用 Form 实例表示。

类型:Form

[h2]prop rawFragment

public prop rawFragment: ?String

功能:获取解码前的锚点组件,用字符串表示。

类型:?String

[h2]prop rawPath

public prop rawPath: String

功能:获取解码前的路径,用字符串表示。

类型:String

[h2]prop rawQuery

public prop rawQuery: ?String

功能:获取解码前的查询组件,用字符串表示。

类型:?String

[h2]prop rawUserInfo

public prop rawUserInfo: UserInfo

功能:获取解码前的用户名和密码信息,用 UserInfo 实例表示。

类型:UserInfo

[h2]prop scheme

public prop scheme: String

功能:获取 URL 中协议部分,用字符串表示。

类型:String

[h2]prop userInfo

public prop userInfo: UserInfo

功能:获取解码后的用户名和密码信息,用 UserInfo 实例表示。

类型:UserInfo

[h2]init(String, String, String)

public init(scheme!: String, hostName!: String, path!: String)

功能:构造一个 URL 实例。

构造实例时需要满足要求:

参数:

异常:

[h2]static func mergePaths(String, String)

public static func mergePaths(basePath: String, refPath: String): String

功能:合并两个路径。

合并规则:将引用路径 refPath 追加到基础路径 basePath 的最后一段。如果 refPath 是绝对路径,结果就是 refPath 原本的值。如果 refPath 不是绝对路径,则将自身拼接至 basePath 最后一个 / 后,所有结果最终都会进行标准化(路径中的.字符,..字符,以及多个连续的 / 字符都会被优化)。具体行为可以参照下图示例。更详细行为参考 rfc3986 协议

例如:

参数:

返回值:

[h2]static func parse(String)

public static func parse(rawUrl: String): URL

功能:将原始字符串解析成 URL 对象,相对路径或绝对路径均可。

这个函数会将把URL按照组件分解,然后分别进行解码并存储在相应的组件属性中,而 rawXXX 属性部分存储的是原始值,不做编解码处理。

具体使用示例和输出结果可见 示例 部分。

该函数可以解析 url 中的用户名和密码(如果内部存在的话),这是符合 rfc3986 协议的解析功能,但是该协议也明确说明了,在任何场景下,明文保存用户信息都有被泄露的风险,所以我们不建议您在 url 中明文保存用户信息,这不安全!

参数:

返回值:

异常:

[h2]func isAbsoluteURL()

public func isAbsoluteURL(): Bool

功能:判断 URL 是否为绝对 URL(scheme 存在时,URL 是绝对 URL)。

返回值:

[h2]func replace(Option<String>, Option<String>, Option<String>, Option<String>, Option<String>, Option<String>, Option<String>)

public func replace(scheme!: Option<String> = None, userInfo!: Option<String> = None,
 hostName!: Option<String> = None, port!: Option<String> = None, path!: Option<String> = None, 
 query!: Option<String> = None, fragment!: Option<String> = None): URL

功能:替换 URL 对象的各组件,并且返回一个新的 URL 对象。

替换时需要满足以下要求:

参数:

返回值:

异常:

[h2]func resolveURL(URL)

public func resolveURL(ref: URL): URL

功能:以当前 URL 实例为基础 URL,以传入的 URL 为参考 URL,根据协议生成一个新的 URL 实例。

例如:http://a/b/c/d;p?q 为基础 URL,以下 = 左边为参考 URL,右边为生成的新 URL:

更详细行为,参见 rfc3986。

参数:

返回值:

[h2]func toString()

public func toString(): String

功能:获取当前 URL 实例的字符串值。

会把 hostName 编码,其余部分取 rawXXX 属性值,进行拼接而获得该函数返回值。

返回值:

class UserInfo

public class UserInfo <: ToString {
    public init()
    public init(userName: String)
    public init(userName: String, passWord: String)
    public init(userName: String, passWord: Option<String>)
}

功能:UserInfo 表示 url 中用户名和密码信息。

URL.parse 可以解析 url 中的用户名和密码,这是符合 rfc3986 协议的解析功能,但是该协议也明确说明了,在任何场景下,明文保存用户信息都有被泄露的风险,所以我们不建议您在 url 中明文保存用户信息,这不安全!

[h2]init()

public init()

功能:创建 UserInfo 实例。

[h2]init(String)

public init(userName: String)

功能:根据用户名创建 UserInfo 实例。

参数:

[h2]init(String, Option<String>)

public init(userName: String, passWord: Option<String>)

功能:根据用户名和 Option<String> 类型的密码创建 UserInfo 实例。

参数:

[h2]init(String, String)

public init(userName: String, passWord: String)

功能:根据用户名和密码创建 UserInfo 实例。

参数:

[h2]func password()

public func password(): Option<String>

功能:获取密码信息。

不建议在 url 中明文保存用户信息!详情参上!

返回值:

[h2]func toString()

public func toString(): String

功能:将当前 UserInfo 实例转换为字符串。

返回值:

[h2]func username()

public func username(): String

功能:获取用户名信息。

返回值: