1# @ohos.url (URL字符串解析)
2
3URL代表着是统一资源定位符,本模块提供了常用的工具函数,实现了解析URL字符串和构造[URL](#url)对象等功能。
4
5> **说明:**
6>
7> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```ts
12import { url } from '@kit.ArkTS';
13```
14## URLParams<sup>9+</sup>
15
16URLParams接口定义了一些处理URL查询字符串的实用方法。
17
18### constructor<sup>9+</sup>
19
20constructor(init?: string[][] | Record&lt;string, string&gt; | string | URLParams)
21
22URLParams的构造函数。
23
24**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
25
26**系统能力:** SystemCapability.Utils.Lang
27
28**参数:**
29
30| 参数名 | 类型 | 必填 | 说明 |
31| -------- | -------- | -------- | -------- |
32| init | string[][] \| Record&lt;string, string&gt; \| string \| URLParams | 否 | 入参对象。<br/>- string[][]:字符串二维数组<br/>- Record&lt;string, string&gt;:对象列表<br/>- string:字符串<br/>- URLParams:对象<br/>- 默认值:null。 |
33
34**错误码:**
35
36以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
37
38| 错误码ID | 错误信息 |
39| -------- | -------- |
40| 401 | Parameter error. Possible causes: 1.Incorrect parameter types; 2.Parameter verification failed. |
41
42**示例:**
43
44```ts
45// 通过string[][]方式构造URLParams对象:
46let objectParams = new url.URLParams([ ['user1', 'abc1'], ['query2', 'first2'], ['query3', 'second3'] ]);
47// 通过Record<string, string>方式构造URLParams对象:
48let objectParams1 = new url.URLParams({"fod" : '1' , "bard" : '2'});
49// 通过string方式构造URLParams对象:
50let objectParams2 = new url.URLParams('?fod=1&bard=2');
51// 通过url对象的search属性构造URLParams对象:
52let urlObject = url.URL.parseURL('https://developer.mozilla.org/?fod=1&bard=2');
53let objectParams3 = new url.URLParams(urlObject.search);
54// 通过url对象的params属性获取URLParams对象:
55let urlObject1 = url.URL.parseURL('https://developer.mozilla.org/?fod=1&bard=2');
56let objectParams4 = urlObject1.params;
57```
58
59
60### append<sup>9+</sup>
61
62append(name: string, value: string): void
63
64将新的键值对插入到查询字符串。
65
66**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
67
68**系统能力:** SystemCapability.Utils.Lang
69
70**参数:**
71
72| 参数名 | 类型 | 必填 | 说明 |
73| -------- | -------- | -------- | -------- |
74| name | string | 是 | 需要插入搜索参数的键名。 |
75| value | string | 是 | 需要插入搜索参数的值。 |
76
77**错误码:**
78
79以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
80
81| 错误码ID | 错误信息 |
82| -------- | -------- |
83| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
84
85**示例:**
86
87```ts
88let urlObject = url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2');
89let paramsObject = new url.URLParams(urlObject.search.slice(1));
90paramsObject.append('fod', '3');
91```
92
93
94### delete<sup>9+</sup>
95
96delete(name: string): void
97
98删除指定名称的键值对。
99
100**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
101
102**系统能力:** SystemCapability.Utils.Lang
103
104**参数:**
105
106| 参数名 | 类型 | 必填 | 说明 |
107| -------- | -------- | -------- | -------- |
108| name | string | 是 | 需要删除的键值名称。 |
109
110**错误码:**
111
112以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
113
114| 错误码ID | 错误信息 |
115| -------- | -------- |
116| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
117
118**示例:**
119
120```ts
121let urlObject = url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2');
122let paramsObject = new url.URLParams(urlObject.search.slice(1));
123paramsObject.delete('fod');
124```
125
126
127### getAll<sup>9+</sup>
128
129getAll(name: string): string[]
130
131获取指定名称的所有键对应值的集合。
132
133**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
134
135**系统能力:** SystemCapability.Utils.Lang
136
137**参数:**
138
139| 参数名 | 类型 | 必填 | 说明 |
140| -------- | -------- | -------- | -------- |
141| name | string | 是 | 指定的键值名称。 |
142
143**返回值:**
144
145| 类型 | 说明 |
146| -------- | -------- |
147| string[] | 返回指定名称的所有键对应值的集合。 |
148
149**错误码:**
150
151以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
152
153| 错误码ID | 错误信息 |
154| -------- | -------- |
155| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
156
157**示例:**
158
159```ts
160let urlObject = url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2');
161let params = new url.URLParams(urlObject.search.slice(1));
162params.append('fod', '3'); // Add a second value for the fod parameter.
163console.log(params.getAll('fod').toString()) // Output ["1","3"].
164```
165
166
167### entries<sup>9+</sup>
168
169entries(): IterableIterator<[string, string]>
170
171返回一个ES6的迭代器,迭代器的每一项都是一个 JavaScript Array。Array的第一项是name,Array的第二项是value。
172
173**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
174
175**系统能力:** SystemCapability.Utils.Lang
176
177**返回值:**
178
179| 类型 | 说明 |
180| -------- | -------- |
181| IterableIterator&lt;[string, string]&gt; | 返回一个ES6的迭代器。 |
182
183**示例:**
184
185```ts
186let searchParamsObject = new url.URLParams("keyName1=valueName1&keyName2=valueName2");
187let pair:Iterable<Object[]> = searchParamsObject.entries();
188let arrayValue = Array.from(pair);
189for (let pair of arrayValue) { // Show keyName/valueName pairs
190  console.log(pair[0]+ ', '+ pair[1]);
191}
192```
193
194
195### forEach<sup>9+</sup>
196
197forEach(callbackFn: (value: string, key: string, searchParams: URLParams) => void, thisArg?: Object): void
198
199通过回调函数来遍历URLSearchParams实例对象上的键值对。
200
201**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
202
203**系统能力:** SystemCapability.Utils.Lang
204
205**参数:**
206
207| 参数名 | 类型 | 必填 | 说明 |
208| -------- | -------- | -------- | -------- |
209| callbackFn | function | 是 | 回调函数。 |
210| thisArg | Object | 否 | callbackFn被调用时用作this值,默认值是本对象。 |
211
212**表1** callbackFn的参数说明
213
214| 参数名 | 类型 | 必填 | 说明 |
215| -------- | -------- | -------- | -------- |
216| value | string | 是 | 当前遍历到的键值。 |
217| key | string | 是 | 当前遍历到的键名。 |
218| searchParams | [URLParams](#urlparams9) | 是 | 当前调用forEach方法的实例对象。 |
219
220**错误码:**
221
222以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
223
224| 错误码ID | 错误信息 |
225| -------- | -------- |
226| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
227
228**示例:**
229
230```ts
231const myURLObject = url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2');
232myURLObject.params.forEach((value, name, searchParams) => {
233    console.log(name, value, myURLObject.params === searchParams);
234});
235```
236
237
238### get<sup>9+</sup>
239
240get(name: string): string | null
241
242获取指定名称对应的第一个值。
243
244> **说明:**
245>
246> 若查找一个不存在的键值对名称时返回值为undefined。
247
248**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
249
250**系统能力:** SystemCapability.Utils.Lang
251
252**参数:**
253
254| 参数名 | 类型 | 必填 | 说明 |
255| -------- | -------- | -------- | -------- |
256| name | string | 是 | 指定键值对的名称。 |
257
258**返回值:**
259
260| 类型 | 说明 |
261| -------- | -------- |
262| string | 返回第一个值。 |
263| null | 如果没找到,返回 null。 |
264
265**错误码:**
266
267以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
268
269| 错误码ID | 错误信息 |
270| -------- | -------- |
271| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
272
273**示例:**
274
275```ts
276let paramsObject = new url.URLParams('name=Jonathan&age=18');
277let name = paramsObject.get("name"); // is the string "Jonathan"
278let age = paramsObject.get("age"); // is the string "18"
279let getObj = paramsObject.get("abc"); // undefined
280```
281
282
283### has<sup>9+</sup>
284
285has(name: string): boolean
286
287判断一个指定的键名对应的值是否存在。
288
289**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
290
291**系统能力:** SystemCapability.Utils.Lang
292
293**参数:**
294
295| 参数名 | 类型 | 必填 | 说明 |
296| -------- | -------- | -------- | -------- |
297| name | string | 是 | 要查找的参数的键名。 |
298
299**返回值:**
300
301| 类型 | 说明 |
302| -------- | -------- |
303| boolean | 是否存在相对应的key值,存在返回true,否则返回false。 |
304
305**错误码:**
306
307以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
308
309| 错误码ID | 错误信息 |
310| -------- | -------- |
311| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
312
313**示例:**
314
315```ts
316let urlObject = url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2');
317let paramsObject = new url.URLParams(urlObject.search.slice(1));
318let result = paramsObject.has('bard');
319```
320
321
322### set<sup>9+</sup>
323
324set(name: string, value: string): void
325
326将与name关联的URLSearchParams对象中的值设置为value。如果存在名称为name的键值对,请将第一个键值对的值设置为value并删除所有其他值。如果不是,则将键值对附加到查询字符串。
327
328**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
329
330**系统能力:** SystemCapability.Utils.Lang
331
332**参数:**
333
334| 参数名 | 类型 | 必填 | 说明 |
335| -------- | -------- | -------- | -------- |
336| name | string | 是 | 将要设置的参数的键值名。 |
337| value | string | 是 | 所要设置的参数值。 |
338
339**错误码:**
340
341以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
342
343| 错误码ID | 错误信息 |
344| -------- | -------- |
345| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
346
347**示例:**
348
349```ts
350let urlObject = url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2');
351let paramsObject = new url.URLParams(urlObject.search.slice(1));
352paramsObject.set('baz', '3'); // Add a third parameter.
353```
354
355
356### sort<sup>9+</sup>
357
358sort(): void
359
360对包含在此对象中的所有键值对进行排序,并返回undefined。排序顺序是根据键的Unicode代码点。该方法使用稳定的排序算法 (即,将保留具有相等键的键值对之间的相对顺序)。
361
362**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
363
364**系统能力:** SystemCapability.Utils.Lang
365
366**示例:**
367
368```ts
369let searchParamsObject = new url.URLParams("c=3&a=9&b=4&d=2"); // Create a test URLSearchParams object
370searchParamsObject.sort(); // Sort the key/value pairs
371console.log(searchParamsObject.toString()); // Display the sorted query string // Output a=9&b=4&c=3&d=2
372```
373
374
375### keys<sup>9+</sup>
376
377keys(): IterableIterator&lt;string&gt;
378
379返回一个所有键值对的name的ES6迭代器。
380
381**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
382
383**系统能力:** SystemCapability.Utils.Lang
384
385**返回值:**
386
387| 类型 | 说明 |
388| -------- | -------- |
389| IterableIterator&lt;string&gt; | 返回一个所有键值对的name的ES6迭代器。 |
390
391**示例:**
392
393```ts
394let searchParamsObject = new url.URLParams("key1=value1&key2=value2"); // Create a URLSearchParamsObject object for testing
395let keys = Array.from(searchParamsObject.keys());
396for (let key of keys) { // Output key-value pairs
397  console.log(key);
398}
399```
400
401
402### values<sup>9+</sup>
403
404values(): IterableIterator&lt;string&gt;
405
406返回一个所有键值对的value的ES6迭代器。
407
408**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
409
410**系统能力:** SystemCapability.Utils.Lang
411
412**返回值:**
413
414| 类型 | 说明 |
415| -------- | -------- |
416| IterableIterator&lt;string&gt; | 返回一个所有键值对的value的ES6迭代器。 |
417
418**示例:**
419
420```ts
421let searchParams = new url.URLParams("key1=value1&key2=value2"); // Create a URLSearchParamsObject object for testing
422let values = Array.from(searchParams.values());
423for (let value of values) {
424  console.log(value);
425}
426```
427
428
429### [Symbol.iterator]<sup>9+</sup>
430
431[Symbol.iterator]\(): IterableIterator&lt;[string, string]&gt;
432
433返回一个ES6的迭代器,迭代器的每一项都是一个 JavaScript Array。Array的第一项是name,Array的第二项是value。
434
435**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
436
437**系统能力:** SystemCapability.Utils.Lang
438
439**返回值:**
440
441| 类型 | 说明 |
442| -------- | -------- |
443| IterableIterator&lt;[string, string]&gt; | 返回一个ES6的迭代器。 |
444
445**示例:**
446
447```ts
448const paramsObject = new url.URLParams('fod=bay&edg=bap');
449let iter: Iterable<Object[]> = paramsObject[Symbol.iterator]();
450let pairs = Array.from(iter);
451for (let pair of pairs) {
452  console.log(pair[0] + ', ' + pair[1]);
453}
454```
455
456
457### toString<sup>9+</sup>
458
459toString(): string
460
461返回序列化为字符串的搜索参数,必要时对字符进行百分比编码。
462
463**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
464
465**系统能力:** SystemCapability.Utils.Lang
466
467**返回值:**
468
469| 类型 | 说明 |
470| -------- | -------- |
471| string | 返回序列化为字符串的搜索参数,必要时对字符进行百分比编码。 |
472
473**示例:**
474
475```ts
476let urlObject = url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2');
477let params = new url.URLParams(urlObject.search.slice(1));
478params.append('fod', '3');
479console.log(params.toString()); // Output 'fod=1&bard=2&fod=3'
480```
481
482## URL
483
484用于解析、构造、规范、编码对应的URL字符串。
485
486### 属性
487
488**系统能力:** SystemCapability.Utils.Lang
489
490| 名称 | 类型 | 可读 | 可写 | 说明 |
491| -------- | -------- | -------- | -------- | -------- |
492| hash | string | 是 | 是 | 获取和设置URL的片段部分。**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。 |
493| host | string | 是 | 是 | 获取和设置URL的主机部分。**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。 |
494| hostname | string | 是 | 是 | 获取和设置URL的主机名部分,不带端口。**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。 |
495| href | string | 是 | 是 | 获取和设置序列化的URL。**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。 |
496| origin | string | 是 | 否 | 获取URL源的只读序列化。**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。 |
497| password | string | 是 | 是 | 获取和设置URL的密码部分。**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。 |
498| pathname | string | 是 | 是 | 获取和设置URL的路径部分。**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。 |
499| port | string | 是 | 是 | 获取和设置URL的端口部分。**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。 |
500| protocol | string | 是 | 是 | 获取和设置URL的协议部分。**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。 |
501| search | string | 是 | 是 | 获取和设置URL的序列化查询部分。**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。 |
502| searchParams<sup>(deprecated)</sup> | [URLSearchParams](#urlsearchparamsdeprecated) | 是 | 否 | 获取URLSearchParams表示URL查询参数的对象。<br/>- **说明:** 此属性从API version 7开始支持,从API version 9开始被废弃。建议使用params<sup>9+</sup>替代。 |
503| params<sup>9+</sup> | [URLParams](#urlparams9) | 是 | 否 | 获取URLParams表示URL查询参数的对象。**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。 |
504| username | string | 是 | 是 | 获取和设置URL的用户名部分。**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。 |
505
506**示例:**
507
508```ts
509let that = url.URL.parseURL('http://username:password@host:8080/directory/file?foo=1&bar=2#fragment');
510console.log("hash " + that.hash) // hash #fragment
511console.log("host " + that.host) // host host:8080
512console.log("hostname " + that.hostname) // hostname host
513console.log("href " + that.href) // href http://username:password@host:8080/directory/file?foo=1&bar=2#fragment
514console.log("origin " + that.origin) // origin http://host:8080
515console.log("password " + that.password) // password password
516console.log("pathname " + that.pathname) // pathname /directory/file
517console.log("port " + that.port) // port 8080
518console.log("protocol " + that.protocol) // protocol http:
519console.log("search " + that.search) // search ?foo=1&bar=2
520console.log("username " + that.username) // username username
521// that.params 返回值为URLParams对象
522console.log("params: foo " + that.params.get("foo")) // params: foo 1
523```
524
525### constructor<sup>(deprecated)</sup>
526
527> **说明:**
528>
529> 从API version 7开始支持,从API version 9开始废弃,建议使用[parseURL<sup>9+</sup>](#parseurl9)替代。
530
531constructor(url: string, base?: string | URL)
532
533URL的构造函数。
534
535**系统能力:** SystemCapability.Utils.Lang
536
537**参数:**
538
539| 参数名 | 类型 | 必填 | 说明 |
540| -------- | -------- | -------- | -------- |
541| url | string | 是 | 入参对象。 |
542| base | string \| URL | 否 | 入参字符串或者对象。<br/>- string:字符串<br/>- URL:字符串或对象<br/>- 默认值是空字符串或空对象。 |
543
544**示例:**
545
546```ts
547let mm = 'https://username:password@host:8080';
548let a = new url.URL("/", mm); // Output 'https://username:password@host:8080/';
549let b = new url.URL(mm); // Output 'https://username:password@host:8080/';
550new url.URL('path/path1', b); // Output 'https://username:password@host:8080/path/path1';
551let c = new url.URL('/path/path1', b);  // Output 'https://username:password@host:8080/path/path1'; 
552new url.URL('/path/path1', c); // Output 'https://username:password@host:8080/path/path1';
553new url.URL('/path/path1', a); // Output 'https://username:password@host:8080/path/path1';
554new url.URL('/path/path1', "https://www.exampleUrl/fr-FR/toot"); // Output https://www.exampleUrl/path/path1
555new url.URL('/path/path1', ''); // Raises a TypeError exception as '' is not a valid URL
556new url.URL('/path/path1'); // Raises a TypeError exception as '/path/path1' is not a valid URL
557new url.URL('https://www.example.com', ); // Output https://www.example.com/
558new url.URL('https://www.example.com', b); // Output https://www.example.com/
559```
560
561### constructor<sup>9+</sup>
562
563constructor()
564
565URL的无参构造函数。parseURL调用后返回一个URL对象,不单独使用。
566
567**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
568
569**系统能力:** SystemCapability.Utils.Lang
570
571### parseURL<sup>9+</sup>
572
573static parseURL(url: string, base?: string | URL): URL
574
575URL静态成员函数。
576
577**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
578
579**系统能力:** SystemCapability.Utils.Lang
580
581**参数:**
582
583| 参数名 | 类型 | 必填 | 说明 |
584| -------- | -------- | -------- | -------- |
585| url | string | 是 | 入参对象。 |
586| base | string \| URL | 否 | 入参字符串或者对象。<br/>- string:字符串<br/>- URL:字符串或对象<br/>- 默认值是空字符串或空对象。 |
587
588**错误码:**
589
590以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
591
592| 错误码ID | 错误信息 |
593| -------- | -------- |
594| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
595| 10200002 | Invalid url string. |
596
597**示例:**
598
599```ts
600let mm = 'https://username:password@host:8080';
601let urlObject = url.URL.parseURL(mm);
602let result = urlObject.toString(); // Output 'https://username:password@host:8080/'
603```
604
605### toString
606
607toString(): string
608
609将解析过后的URL转化为字符串。
610
611**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
612
613**系统能力:** SystemCapability.Utils.Lang
614
615**返回值:**
616
617| 类型 | 说明 |
618| -------- | -------- |
619| string | 用于返回网址的字符串序列化。 |
620
621**示例:**
622
623```ts
624const urlObject = url.URL.parseURL('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
625let result = urlObject.toString(); // Output 'https://username:password@host:8080/directory/file?query=pppppp#qwer=da'
626```
627
628### toJSON
629
630toJSON(): string
631
632将解析过后的URL转化为JSON字符串。
633
634**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
635
636**系统能力:** SystemCapability.Utils.Lang
637
638**返回值:**
639
640| 类型 | 说明 |
641| -------- | -------- |
642| string | 用于返回网址的字符串序列化。 |
643
644**示例:**
645```ts
646const urlObject = url.URL.parseURL('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
647let result = urlObject.toJSON();
648```
649
650## URLSearchParams<sup>(deprecated)</sup>
651
652URLSearchParams接口定义了一些处理URL查询字符串的实用方法,从API version 9开始废弃,建议使用[URLParams](#urlparams9)。
653
654### constructor<sup>(deprecated)</sup>
655
656constructor(init?: string[][] | Record&lt;string, string&gt; | string | URLSearchParams)
657
658URLSearchParams的构造函数。
659
660> **说明:**
661>
662> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.constructor<sup>9+</sup>](#constructor9)替代。
663
664**系统能力:** SystemCapability.Utils.Lang
665
666**参数:**
667
668| 参数名 | 类型 | 必填 | 说明 |
669| -------- | -------- | -------- | -------- |
670| init | string[][] \| Record&lt;string, string&gt; \| string \| URLSearchParams | 否 | 入参对象。<br/>- string[][]:字符串二维数组<br/>- Record&lt;string, string&gt;:对象列表<br/>- string:字符串<br/>- URLSearchParams:对象<br/>- 默认值:null。 |
671
672**示例:**
673
674```ts
675let objectParams = new url.URLSearchParams([ ['user1', 'abc1'], ['query2', 'first2'], ['query3', 'second3'] ]);
676let objectParams1 = new url.URLSearchParams({"fod" : '1' , "bard" : '2'});
677let objectParams2 = new url.URLSearchParams('?fod=1&bard=2');
678let urlObject = new url.URL('https://developer.mozilla.org/?fod=1&bard=2');
679let params = new url.URLSearchParams(urlObject.search);
680```
681
682### append<sup>(deprecated)</sup>
683
684append(name: string, value: string): void
685
686将新的键值对插入到查询字符串。
687
688> **说明:**
689>
690> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.append<sup>9+</sup>](#append9)替代。
691
692**系统能力:** SystemCapability.Utils.Lang
693
694**参数:**
695
696| 参数名 | 类型 | 必填 | 说明 |
697| -------- | -------- | -------- | -------- |
698| name | string | 是 | 需要插入搜索参数的键名。 |
699| value | string | 是 | 需要插入搜索参数的值。 |
700
701**示例:**
702
703```ts
704let urlObject = new url.URL('https://developer.exampleUrl/?fod=1&bard=2');
705let paramsObject = new url.URLSearchParams(urlObject.search.slice(1));
706paramsObject.append('fod', '3');
707```
708
709### delete<sup>(deprecated)</sup>
710
711delete(name: string): void
712
713删除指定名称的键值对。
714
715> **说明:**
716>
717> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.delete<sup>9+</sup>](#delete9)替代。
718
719**系统能力:** SystemCapability.Utils.Lang
720
721**参数:**
722
723| 参数名 | 类型 | 必填 | 说明 |
724| -------- | -------- | -------- | -------- |
725| name | string | 是 | 需要删除的键值名称。 |
726
727**示例:**
728
729```ts
730let urlObject = new url.URL('https://developer.exampleUrl/?fod=1&bard=2');
731let paramsobject = new url.URLSearchParams(urlObject.search.slice(1));
732paramsobject.delete('fod');
733```
734
735### getAll<sup>(deprecated)</sup>
736
737getAll(name: string): string[]
738
739获取指定名称的所有键值对。
740
741> **说明:**
742>
743> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.getAll<sup>9+</sup>](#getall9)替代。
744
745**系统能力:** SystemCapability.Utils.Lang
746
747**参数:**
748
749| 参数名 | 类型 | 必填 | 说明 |
750| -------- | -------- | -------- | -------- |
751| name | string | 是 | 指定的键值名称。 |
752
753**返回值:**
754
755| 类型 | 说明 |
756| -------- | -------- |
757| string[] | 返回指定名称的所有键值对。 |
758
759**示例:**
760
761```ts
762let urlObject = new url.URL('https://developer.exampleUrl/?fod=1&bard=2');
763let params = new url.URLSearchParams(urlObject.search.slice(1));
764params.append('fod', '3'); // Add a second value for the fod parameter.
765console.log(params.getAll('fod').toString()) // Output ["1","3"].
766```
767
768### entries<sup>(deprecated)</sup>
769
770entries(): IterableIterator<[string, string]>
771
772返回一个ES6的迭代器,迭代器的每一项都是一个 JavaScript Array。Array的第一项是name,Array的第二项是value。
773
774> **说明:**
775>
776> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.entries<sup>9+</sup>](#entries9)替代。
777
778**系统能力:** SystemCapability.Utils.Lang
779
780**返回值:**
781
782| 类型 | 说明 |
783| -------- | -------- |
784| IterableIterator&lt;[string, string]&gt; | 返回一个ES6的迭代器。 |
785
786**示例:**
787
788```ts
789let searchParamsObject = new url.URLSearchParams("keyName1=valueName1&keyName2=valueName2");
790let iter: Iterable<Object[]> = searchParamsObject.entries();
791let pairs = Array.from(iter);
792for (let pair of pairs) { // Show keyName/valueName pairs
793  console.log(pair[0]+ ', '+ pair[1]);
794}
795```
796
797
798### forEach<sup>(deprecated)</sup>
799
800forEach(callbackFn: (value: string, key: string, searchParams: URLSearchParams) => void, thisArg?: Object): void
801
802通过回调函数来遍历URLSearchParams实例对象上的键值对。
803
804> **说明:**
805>
806> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.forEach<sup>9+</sup>](#foreach9)替代。
807
808**系统能力:** SystemCapability.Utils.Lang
809
810**参数:**
811
812| 参数名 | 类型 | 必填 | 说明 |
813| -------- | -------- | -------- | -------- |
814| callbackFn | function | 是 | 回调函数。 |
815| thisArg | Object | 否 | callbackFn被调用时用作this值,默认值是本对象。 |
816
817**表1** callbackFn的参数说明
818
819| 参数名 | 类型 | 必填 | 说明 |
820| -------- | -------- | -------- | -------- |
821| value | string | 是 | 当前遍历到的键值。 |
822| key | string | 是 | 当前遍历到的键名。 |
823| searchParams | [URLSearchParams](#urlsearchparamsdeprecated) | 是 | 当前调用forEach方法的实例对象。 |
824
825**示例:**
826
827```ts
828const myURLObject = new url.URL('https://developer.exampleUrl/?fod=1&bard=2');
829myURLObject.searchParams.forEach((value, name, searchParams) => {
830    console.log(name, value, myURLObject.searchParams === searchParams);
831});
832```
833
834
835### get<sup>(deprecated)</sup>
836
837get(name: string): string | null
838
839获取指定名称对应的第一个值。
840
841> **说明:**
842>
843> 若查找一个不存在的键值对名称时返回值为undefined,从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.get<sup>9+</sup>](#get9)替代。
844
845
846**系统能力:** SystemCapability.Utils.Lang
847
848**参数:**
849
850| 参数名 | 类型 | 必填 | 说明 |
851| -------- | -------- | -------- | -------- |
852| name | string | 是 | 指定键值对的名称。 |
853
854**返回值:**
855
856| 类型 | 说明 |
857| -------- | -------- |
858| string | 返回第一个值。 |
859| null | 如果没找到,返回 null。 |
860
861**示例:**
862
863```ts
864let paramsObject = new url.URLSearchParams('name=Jonathan&age=18');
865let name = paramsObject.get("name"); // is the string "Jonathan"
866let age = paramsObject.get("age"); // is the string '18'
867let getObj = paramsObject.get("abc"); // undefined
868```
869
870
871### has<sup>(deprecated)</sup>
872
873has(name: string): boolean
874
875判断一个指定的键名对应的值是否存在。
876
877> **说明:**
878>
879> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.has<sup>9+</sup>](#has9)替代。
880
881**系统能力:** SystemCapability.Utils.Lang
882
883**参数:**
884
885| 参数名 | 类型 | 必填 | 说明 |
886| -------- | -------- | -------- | -------- |
887| name | string | 是 | 要查找的参数的键名。 |
888
889**返回值:**
890
891| 类型 | 说明 |
892| -------- | -------- |
893| boolean | 是否存在相对应的key值,存在返回true,否则返回false。 |
894
895**示例:**
896
897```ts
898let urlObject = new url.URL('https://developer.exampleUrl/?fod=1&bard=2');
899let paramsObject = new url.URLSearchParams(urlObject.search.slice(1));
900paramsObject.has('bard') === true;
901```
902
903
904### set<sup>(deprecated)</sup>
905
906set(name: string, value: string): void
907
908将与name关联的URLSearchParams对象中的值设置为value。如果存在名称为name的键值对,请将第一个键值对的值设置为value并删除所有其他值。如果不是,则将键值对附加到查询字符串。
909
910> **说明:**
911>
912> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.set<sup>9+</sup>](#set9)替代。
913
914**系统能力:** SystemCapability.Utils.Lang
915
916**参数:**
917
918| 参数名 | 类型 | 必填 | 说明 |
919| -------- | -------- | -------- | -------- |
920| name | string | 是 | 将要设置的参数的键值名。 |
921| value | string | 是 | 所要设置的参数值。 |
922
923**示例:**
924
925```ts
926let urlObject = new url.URL('https://developer.exampleUrl/?fod=1&bard=2');
927let paramsObject = new url.URLSearchParams(urlObject.search.slice(1));
928paramsObject.set('baz', '3'); // Add a third parameter.
929```
930
931
932### sort<sup>(deprecated)</sup>
933
934sort(): void
935
936对包含在此对象中的所有键值对进行排序,并返回undefined。排序顺序是根据键的Unicode代码点。该方法使用稳定的排序算法 (即,将保留具有相等键的键值对之间的相对顺序)。
937
938> **说明:**
939>
940> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.sort<sup>9+</sup>](#sort9)替代。
941
942**系统能力:** SystemCapability.Utils.Lang
943
944**示例:**
945
946```ts
947let searchParamsObject = new url.URLSearchParams("c=3&a=9&b=4&d=2"); // Create a test URLSearchParams object
948searchParamsObject.sort(); // Sort the key/value pairs
949console.log(searchParamsObject.toString()); // Display the sorted query string // Output a=9&b=4&c=3&d=2
950```
951
952
953### keys<sup>(deprecated)</sup>
954
955keys(): IterableIterator&lt;string&gt;
956
957返回一个所有键值对的name的ES6迭代器。
958
959> **说明:**
960>
961> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.keys<sup>9+</sup>](#keys9)替代。
962
963**系统能力:** SystemCapability.Utils.Lang
964
965**返回值:**
966
967| 类型 | 说明 |
968| -------- | -------- |
969| IterableIterator&lt;string&gt; | 返回一个所有键值对的name的ES6迭代器。 |
970
971**示例:**
972
973```ts
974let searchParamsObject = new url.URLSearchParams("key1=value1&key2=value2"); // Create a URLSearchParamsObject object for testing
975let keys = Array.from(searchParamsObject.keys());
976for (let key of keys) { // Output key-value pairs
977  console.log(key);
978}
979```
980
981
982### values<sup>(deprecated)</sup>
983
984values(): IterableIterator&lt;string&gt;
985
986返回一个所有键值对的value的ES6迭代器。
987
988> **说明:**
989>
990> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.values<sup>9+</sup>](#values9)替代。
991
992**系统能力:** SystemCapability.Utils.Lang
993
994**返回值:**
995
996| 类型 | 说明 |
997| -------- | -------- |
998| IterableIterator&lt;string&gt; | 返回一个所有键值对的value的ES6迭代器。 |
999
1000**示例:**
1001
1002```ts
1003let searchParams = new url.URLSearchParams("key1=value1&key2=value2"); // Create a URLSearchParamsObject object for testing
1004let values = Array.from(searchParams.values());
1005for (let value of values) {
1006  console.log(value);
1007}
1008```
1009
1010
1011### [Symbol.iterator]<sup>(deprecated)</sup>
1012
1013[Symbol.iterator]\(): IterableIterator&lt;[string, string]&gt;
1014
1015返回一个ES6的迭代器,迭代器的每一项都是一个 JavaScript Array。Array的第一项是name,Array的第二项是value。
1016
1017> **说明:**
1018>
1019> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.[Symbol.iterator]<sup>9+</sup>](#symboliterator9)替代。
1020
1021**系统能力:** SystemCapability.Utils.Lang
1022
1023**返回值:**
1024
1025| 类型 | 说明 |
1026| -------- | -------- |
1027| IterableIterator&lt;[string, string]&gt; | 返回一个ES6的迭代器。 |
1028
1029**示例:**
1030
1031```ts
1032const paramsObject = new url.URLSearchParams('fod=bay&edg=bap');
1033let iter: Iterable<Object[]> = paramsObject[Symbol.iterator]();
1034let pairs = Array.from(iter);
1035for (let pair of pairs) {
1036  console.log(pair[0] + ', ' + pair[1]);
1037}
1038```
1039
1040### toString<sup>(deprecated)</sup>
1041
1042toString(): string
1043
1044返回序列化为字符串的搜索参数,必要时对字符进行百分比编码。
1045
1046> **说明:**
1047>
1048> 从API version 7开始支持,从API version 9开始废弃,建议使用[URLParams.toString<sup>9+</sup>](#tostring9)替代。
1049
1050**系统能力:** SystemCapability.Utils.Lang
1051
1052**返回值:**
1053
1054| 类型 | 说明 |
1055| -------- | -------- |
1056| string | 返回序列化为字符串的搜索参数,必要时对字符进行百分比编码。 |
1057
1058**示例:**
1059
1060```ts
1061let urlObject = new url.URL('https://developer.exampleUrl/?fod=1&bard=2');
1062let params = new url.URLSearchParams(urlObject.search.slice(1));
1063params.append('fod', '3');
1064console.log(params.toString()); // Output 'fod=1&bard=2&fod=3'
1065```
1066<!--no_check-->