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