1# @ohos.uri (URI字符串解析) 2 3本模块提供URI字符串解析的相关功能。 4 5> **说明:** 6> 7> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8 9 10## 导入模块 11 12```ts 13import uri from '@ohos.uri' 14``` 15 16## URI 17 18构造URI对象,提供判断对象相等、规范路径等方法。 19 20### 属性 21 22**系统能力:** SystemCapability.Utils.Lang 23 24| 名称 | 类型 | 可读 | 可写 | 说明 | 25| -------- | -------- | -------- | -------- | -------- | 26| scheme | string | 是 | 否 | 获取URI 的协议部分。 | 27| userInfo | string | 是 | 否 | 获取 URI 的用户信息部分。 | 28| host | string | 是 | 否 | 获取 URI 的主机名部分(不带端口)。 | 29| port | string | 是 | 否 | 获取 URI 的端口部分。 | 30| path | string | 是 | 否 | 获取 URI 的路径部分。 | 31| query | string | 是 | 否 | 获取 URI 的查询部分。 | 32| fragment | string | 是 | 否 | 获取 URI 的片段部分 | 33| authority | string | 是 | 否 | 获取此URI的解码权限组件部分。 | 34| ssp | string | 是 | 否 | 获取URI的解码方案特定部分。 | 35 36### 命名规则 37 38**命名形式:** 39 40标准uri定义由以下三个部分组成 41[scheme:]scheme-specific-part[#fragment] 42- scheme: 协议名,根据需要填写。例如http、https、ftp、datashare、dataability等。 43- scheme-specific-part: URI的特定解码方案特定部分,由[//][authority][path][?query]组成,根据需要填写。 44 - authority: URI的解码权限组件部分。由[userinfo@]host[:port]组成,根据需要填写。 45 - userinfo: 用户信息,根据需要填写。 46 - host: 服务器的主机名部分,当authority存在时,此项必填。 47 - port: 服务器端口,根据需要填写。 48 - path: 路径信息,根据需要填写。 49 - query: 查询部分,根据需要填写。 50- fragment: 片段部分,根据需要填写。 51 52**URI示例:** 53 54```ts 55const result1 = new uri.URI("ftp://ftp.aaa.bbb.ccc/dddd/eee.txt"); 56console.log(result1.host) // ftp.aaa.bbb.ccc 57console.log(result1.fragment) // null 58console.log(result1.path) // /dddd/eee.txt 59console.log(result1.scheme) // ftp 60console.log(result1.userInfo) // null 61console.log(result1.port) // -1 62console.log(result1.query) // null 63 64const result2 = new uri.URI("gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles#fragment"); 65console.log(result2.host) // spinaltap.micro.umn.edu 66console.log(result2.fragment) // fragment 67console.log(result2.path) // /00/Weather/California/Los Angeles 68console.log(result2.scheme) // gopher 69console.log(result2.userInfo) // null 70console.log(result2.port) //-1 71console.log(result2.query) // null 72 73const result3 = new uri.URI("datashare:///com.samples.datasharetest.DataShare/DB00/TBL00"); 74console.log(result3.host) // null 75console.log(result3.fragment) // null 76console.log(result3.path) // /com.samples.datasharetest.DataShare/DB00/TBL00 77console.log(result3.scheme) // datashare 78console.log(result3.userInfo) // null 79console.log(result3.port) // -1 80console.log(result3.query) // null 81 82const result4 = new uri.URI("https://username:password@host:8080/directory/file?foo=1&bar=2#fragment"); 83console.log(result4.host) // host 84console.log(result4.fragment) // fragment 85console.log(result4.path) // /directory/file 86console.log(result4.scheme) // https 87console.log(result4.userInfo) // username:password 88console.log(result4.port) // 8080 89console.log(result4.query) // foo=1&bar=2 90 91const result5 = new uri.URI("dataability:///com.example.DataAbility"); 92console.log(result5.host) // null 93console.log(result5.fragment) // null 94console.log(result5.path) // /com.example.DataAbility: 95console.log(result5.scheme) // dataability 96console.log(result5.userInfo) // null 97console.log(result5.port) // -1 98console.log(result5.query) // null 99``` 100 101### constructor 102 103constructor(uri: string) 104 105constructor是URI的构造函数。 106 107**系统能力:** SystemCapability.Utils.Lang 108 109**参数:** 110 111| 参数名 | 类型 | 必填 | 说明 | 112| -------- | -------- | -------- | -------- | 113| uri | string | 是 | 入参对象。 | 114 115**错误码:** 116 117以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。 118 119| 错误码ID | 错误信息 | 120| -------- | -------- | 121| 10200002 | Invalid uri string. | 122 123**示例:** 124 125```ts 126let mm = 'https://username:password@host:8080/directory/file?foo=1&bar=2#fragment'; 127new uri.URI(mm); 128``` 129```ts 130new uri.URI('https://username:password@host:8080'); 131``` 132 133 134### toString 135 136toString(): string 137 138**系统能力:** SystemCapability.Utils.Lang 139 140返回适用于URI中的查询字符串。 141 142**返回值:** 143 144| 类型 | 说明 | 145| -------- | -------- | 146| string | 返回网址的字符串序列化。 | 147 148**示例:** 149 150```ts 151const result = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da'); 152let result1 = result.toString(); 153``` 154 155 156### equals<sup>(deprecated)</sup> 157 158equals(other: URI): boolean 159 160判断此URI是否与其他URI对象相等。 161 162> **说明:** 163> 164> 从API version 8开始支持,从API version 9开始废弃,建议使用[equalsTo<sup>9+</sup>](#equalsto9)替代。 165 166**系统能力:** SystemCapability.Utils.Lang 167 168**参数:** 169 170| 参数名 | 类型 | 必填 | 说明 | 171| -------- | -------- | -------- | -------- | 172| other | [URI](#uri) | 是 | 需要比较的URI对象。 | 173 174**返回值:** 175 176| 类型 | 说明 | 177| -------- | -------- | 178| boolean | 返回true表示相等,否则返回false。 | 179 180**示例:** 181 182```ts 183const uriInstance = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da'); 184const uriInstance1 = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da'); 185uriInstance.equals(uriInstance1); 186``` 187### equalsTo<sup>9+</sup> 188 189equalsTo(other: URI): boolean 190 191判断此URI是否与其他URI对象相等。 192 193**系统能力:** SystemCapability.Utils.Lang 194 195**参数:** 196 197| 参数名 | 类型 | 必填 | 说明 | 198| -------- | -------- | -------- | -------- | 199| other | [URI](#uri) | 是 | 需要比较的URI对象。 | 200 201**返回值:** 202 203| 类型 | 说明 | 204| -------- | -------- | 205| boolean | 返回true表示相等,否则返回false。 | 206 207**示例:** 208 209```ts 210const uriInstance = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da'); 211const uriInstance1 = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da'); 212let result = uriInstance.equalsTo(uriInstance1); 213``` 214 215### checkIsAbsolute 216 217checkIsAbsolute(): boolean 218 219判断此URI是否为绝对URI(是否定义了scheme组件)。 220 221**系统能力:** SystemCapability.Utils.Lang 222 223**返回值:** 224 225| 类型 | 说明 | 226| -------- | -------- | 227| boolean | 如果是绝对URI返回true,否则返回false。| 228 229**示例:** 230 231```ts 232const uriInstance = new uri.URI('https://username:password@www.qwer.com:8080?query=pppppp'); 233console.log(`${uriInstance.checkIsAbsolute()}`); // true 234const uriInstance1 = new uri.URI('xxx.com/suppliers.htm'); 235console.log(`${uriInstance1.checkIsAbsolute()}`); // false 236``` 237 238 239### normalize 240 241normalize(): URI 242 243规范化此URI的路径。 244 245**系统能力:** SystemCapability.Utils.Lang 246 247**返回值:** 248 249| 类型 | 说明 | 250| -------- | -------- | 251| URI | 返回一个path被规范化后的URI对象。 | 252 253**示例:** 254 255```ts 256const uriInstance = new uri.URI('https://username:password@www.qwer.com:8080/path/path1/../path2/./path3?query=pppppp'); 257console.log(uriInstance.path); // /path/path1/../path2/./path3 258let uriInstance1 = uriInstance.normalize(); 259console.log(uriInstance1.path); // /path/path2/path3 260``` 261