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