ios 开发之没事来看看Linux

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

上一篇 下一篇

猜你喜欢

热点阅读