• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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