URL 属性详解
2020-09-08 本文已影响0人
等这姑娘老在我心里
一般url格式
scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]
完整url 结构图
hierarchical part
┌───────────────────┴─────────────────────┐
authority path
┌───────────────┴───────────────┐┌───┴────┐
abc://username:password@example.com:123/path/data?key=value&key2=value2#fragid1
└┬┘ └───────┬───────┘ └────┬────┘ └┬┘ └─────────┬─────────┘ └──┬──┘
scheme user information host port query fragment
urn:example:mammal:monotreme:echidna
└┬┘ └────────────┬───────────────┘
scheme path
demo详解
code 地址
let urlStr = "https://www.baidu.com:2333/path/data?key=123&value=321#fragid"
let url = URL.init(string: urlStr)!
let urlReq = URLRequest.init(url: url)
// absoluteURL 绝对网址
print(urlReq.url?.absoluteURL.absoluteString ?? "") //https://www.baidu.com
// host 主机
print(urlReq.url?.host ?? "") //www.baidu.com
// port 端口
print(url.port ?? "端口") //2333
// scheme 协议
print(urlReq.url?.scheme ?? "") //https
// query 查询语句 键值对&
print(urlReq.url?.query ?? "") // key=123&value=321
// relative 相对路径
print(urlReq.url?.relativeString ?? "") //https://www.baidu.com:2333/path/data?key=123&value=321#fragid
print(urlReq.url?.relativePath ?? "") //path/data
// fragment 解码后的片段
print(urlReq.url?.fragment ?? "") // fragid
参考资料: [iOS-Foundation] NSURL