# @ohos.url (URLå—符串解æž) URL代表ç€æ˜¯ç»Ÿä¸€èµ„æºå®šä½ç¬¦ï¼Œæœ¬æ¨¡å—æ供了常用的工具函数,实现了解æžURLå—ç¬¦ä¸²å’Œæž„é€ [URL](#url)对象ç‰åŠŸèƒ½ã€‚ > **说明:** > > 本模å—首批接å£ä»ŽAPI version 7开始支æŒã€‚åŽç»ç‰ˆæœ¬çš„新增接å£ï¼Œé‡‡ç”¨ä¸Šè§’æ ‡å•ç‹¬æ ‡è®°æŽ¥å£çš„起始版本。 ## å¯¼å…¥æ¨¡å— ```ts import { url } from '@kit.ArkTS'; ``` ## URLParams<sup>9+</sup> URLParams接å£å®šä¹‰äº†ä¸€äº›å¤„ç†URL查询å—符串的实用方法。 ### constructor<sup>9+</sup> constructor(init?: string[][] | Record<string, string> | string | URLParams) URLParamsçš„æž„é€ å‡½æ•°ã€‚ **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | init | string[][] \| Record<string, string> \| string \| URLParams | å¦ | å…¥å‚对象。<br/>- string[][]:å—符串二维数组<br/>- Record<string, string>:对象列表<br/>- string:å—符串<br/>- URLParams:对象<br/>- 默认值:null。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | -------- | | 401 | Parameter error. Possible causes: 1.Incorrect parameter types; 2.Parameter verification failed. | **示例:** ```ts // 通过string[][]æ–¹å¼æž„é€ URLParams对象: let objectParams = new url.URLParams([ ['user1', 'abc1'], ['query2', 'first2'], ['query3', 'second3'] ]); // 通过Record<string, string>æ–¹å¼æž„é€ URLParams对象: let objectParams1 = new url.URLParams({"fod" : '1' , "bard" : '2'}); // 通过stringæ–¹å¼æž„é€ URLParams对象: let objectParams2 = new url.URLParams('?fod=1&bard=2'); // 通过url对象的searchå±žæ€§æž„é€ URLParams对象: let urlObject = url.URL.parseURL('https://developer.mozilla.org/?fod=1&bard=2'); let objectParams3 = new url.URLParams(urlObject.search); // 通过url对象的params属性获å–URLParams对象: let urlObject1 = url.URL.parseURL('https://developer.mozilla.org/?fod=1&bard=2'); let objectParams4 = urlObject1.params; ``` ### append<sup>9+</sup> append(name: string, value: string): void 将新的键值对æ’入到查询å—符串。 **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | name | string | 是 | 需è¦æ’å…¥æœç´¢å‚æ•°çš„é”®å。 | | value | string | 是 | 需è¦æ’å…¥æœç´¢å‚数的值。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | -------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | **示例:** ```ts let urlObject = url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2'); let paramsObject = new url.URLParams(urlObject.search.slice(1)); paramsObject.append('fod', '3'); ``` ### delete<sup>9+</sup> delete(name: string): void åˆ é™¤æŒ‡å®šå称的键值对。 **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | name | string | 是 | 需è¦åˆ 除的键值å称。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | -------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | **示例:** ```ts let urlObject = url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2'); let paramsObject = new url.URLParams(urlObject.search.slice(1)); paramsObject.delete('fod'); ``` ### getAll<sup>9+</sup> getAll(name: string): string[] 获å–指定å称的所有键对应值的集åˆã€‚ **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | name | string | 是 | 指定的键值å称。 | **返回值:** | 类型 | 说明 | | -------- | -------- | | string[] | 返回指定å称的所有键对应值的集åˆã€‚ | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | -------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | **示例:** ```ts let urlObject = url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2'); let params = new url.URLParams(urlObject.search.slice(1)); params.append('fod', '3'); // Add a second value for the fod parameter. console.log(params.getAll('fod').toString()) // Output ["1","3"]. ``` ### entries<sup>9+</sup> entries(): IterableIterator<[string, string]> 返回一个ES6çš„è¿ä»£å™¨ï¼Œè¿ä»£å™¨çš„æ¯ä¸€é¡¹éƒ½æ˜¯ä¸€ä¸ª JavaScript Array。Array的第一项是name,Array的第二项是value。 **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **返回值:** | 类型 | 说明 | | -------- | -------- | | IterableIterator<[string, string]> | 返回一个ES6çš„è¿ä»£å™¨ã€‚ | **示例:** ```ts let searchParamsObject = new url.URLParams("keyName1=valueName1&keyName2=valueName2"); let pair:Iterable<Object[]> = searchParamsObject.entries(); let arrayValue = Array.from(pair); for (let pair of arrayValue) { // Show keyName/valueName pairs console.log(pair[0]+ ', '+ pair[1]); } ``` ### forEach<sup>9+</sup> forEach(callbackFn: (value: string, key: string, searchParams: URLParams) => void, thisArg?: Object): void 通过回调函数æ¥é历URLSearchParams实例对象上的键值对。 **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | callbackFn | function | 是 | 回调函数。 | | thisArg | Object | å¦ | callbackFn被调用时用作this值,默认值是本对象。 | **表1** callbackFnçš„å‚数说明 | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | value | string | 是 | 当å‰é历到的键值。 | | key | string | 是 | 当å‰é历到的键å。 | | searchParams | [URLParams](#urlparams9) | 是 | 当å‰è°ƒç”¨forEach方法的实例对象。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | -------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | **示例:** ```ts const myURLObject = url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2'); myURLObject.params.forEach((value, name, searchParams) => { console.log(name, value, myURLObject.params === searchParams); }); ``` ### get<sup>9+</sup> get(name: string): string | null 获å–指定å称对应的第一个值。 > **说明:** > > 若查找一个ä¸å˜åœ¨çš„键值对å称时返回值为undefined。 **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | name | string | 是 | 指定键值对的å称。 | **返回值:** | 类型 | 说明 | | -------- | -------- | | string | 返回第一个值。 | | null | 如果没找到,返回 null。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | -------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | **示例:** ```ts let paramsObject = new url.URLParams('name=Jonathan&age=18'); let name = paramsObject.get("name"); // is the string "Jonathan" let age = paramsObject.get("age"); // is the string "18" let getObj = paramsObject.get("abc"); // undefined ``` ### has<sup>9+</sup> has(name: string): boolean 判æ–一个指定的键å对应的值是å¦å˜åœ¨ã€‚ **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | name | string | 是 | è¦æŸ¥æ‰¾çš„å‚æ•°çš„é”®å。 | **返回值:** | 类型 | 说明 | | -------- | -------- | | boolean | 是å¦å˜åœ¨ç›¸å¯¹åº”çš„key值,å˜åœ¨è¿”回true,å¦åˆ™è¿”回false。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | -------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | **示例:** ```ts let urlObject = url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2'); let paramsObject = new url.URLParams(urlObject.search.slice(1)); let result = paramsObject.has('bard'); ``` ### set<sup>9+</sup> set(name: string, value: string): void 将与nameå…³è”çš„URLSearchParams对象ä¸çš„值设置为value。如果å˜åœ¨å称为name的键值对,请将第一个键值对的值设置为valueå¹¶åˆ é™¤æ‰€æœ‰å…¶ä»–å€¼ã€‚å¦‚æžœä¸æ˜¯ï¼Œåˆ™å°†é”®å€¼å¯¹é™„åŠ åˆ°æŸ¥è¯¢å—符串。 **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | name | string | 是 | å°†è¦è®¾ç½®çš„å‚数的键值å。 | | value | string | 是 | 所è¦è®¾ç½®çš„å‚数值。 | **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | -------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | **示例:** ```ts let urlObject = url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2'); let paramsObject = new url.URLParams(urlObject.search.slice(1)); paramsObject.set('baz', '3'); // Add a third parameter. ``` ### sort<sup>9+</sup> sort(): void 对包å«åœ¨æ¤å¯¹è±¡ä¸çš„所有键值对进行排åºï¼Œå¹¶è¿”回undefined。排åºé¡ºåºæ˜¯æ ¹æ®é”®çš„Unicode代ç 点。该方法使用稳定的排åºç®—法 (å³ï¼Œå°†ä¿ç•™å…·æœ‰ç›¸ç‰é”®çš„键值对之间的相对顺åºï¼‰ã€‚ **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **示例:** ```ts let searchParamsObject = new url.URLParams("c=3&a=9&b=4&d=2"); // Create a test URLSearchParams object searchParamsObject.sort(); // Sort the key/value pairs console.log(searchParamsObject.toString()); // Display the sorted query string // Output a=9&b=4&c=3&d=2 ``` ### keys<sup>9+</sup> keys(): IterableIterator<string> 返回一个所有键值对的nameçš„ES6è¿ä»£å™¨ã€‚ **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **返回值:** | 类型 | 说明 | | -------- | -------- | | IterableIterator<string> | 返回一个所有键值对的nameçš„ES6è¿ä»£å™¨ã€‚ | **示例:** ```ts let searchParamsObject = new url.URLParams("key1=value1&key2=value2"); // Create a URLSearchParamsObject object for testing let keys = Array.from(searchParamsObject.keys()); for (let key of keys) { // Output key-value pairs console.log(key); } ``` ### values<sup>9+</sup> values(): IterableIterator<string> 返回一个所有键值对的valueçš„ES6è¿ä»£å™¨ã€‚ **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **返回值:** | 类型 | 说明 | | -------- | -------- | | IterableIterator<string> | 返回一个所有键值对的valueçš„ES6è¿ä»£å™¨ã€‚ | **示例:** ```ts let searchParams = new url.URLParams("key1=value1&key2=value2"); // Create a URLSearchParamsObject object for testing let values = Array.from(searchParams.values()); for (let value of values) { console.log(value); } ``` ### [Symbol.iterator]<sup>9+</sup> [Symbol.iterator]\(): IterableIterator<[string, string]> 返回一个ES6çš„è¿ä»£å™¨ï¼Œè¿ä»£å™¨çš„æ¯ä¸€é¡¹éƒ½æ˜¯ä¸€ä¸ª JavaScript Array。Array的第一项是name,Array的第二项是value。 **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **返回值:** | 类型 | 说明 | | -------- | -------- | | IterableIterator<[string, string]> | 返回一个ES6çš„è¿ä»£å™¨ã€‚ | **示例:** ```ts const paramsObject = new url.URLParams('fod=bay&edg=bap'); let iter: Iterable<Object[]> = paramsObject[Symbol.iterator](); let pairs = Array.from(iter); for (let pair of pairs) { console.log(pair[0] + ', ' + pair[1]); } ``` ### toString<sup>9+</sup> toString(): string 返回åºåˆ—化为å—符串的æœç´¢å‚数,必è¦æ—¶å¯¹å—符进行百分比编ç 。 **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **返回值:** | 类型 | 说明 | | -------- | -------- | | string | 返回åºåˆ—化为å—符串的æœç´¢å‚数,必è¦æ—¶å¯¹å—符进行百分比编ç 。 | **示例:** ```ts let urlObject = url.URL.parseURL('https://developer.exampleUrl/?fod=1&bard=2'); let params = new url.URLParams(urlObject.search.slice(1)); params.append('fod', '3'); console.log(params.toString()); // Output 'fod=1&bard=2&fod=3' ``` ## URL 用于解æžã€æž„é€ ã€è§„范ã€ç¼–ç 对应的URLå—符串。 ### 属性 **系统能力:** SystemCapability.Utils.Lang | å称 | 类型 | å¯è¯» | å¯å†™ | 说明 | | -------- | -------- | -------- | -------- | -------- | | hash | string | 是 | 是 | 获å–和设置URL的片段部分。**原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ | | host | string | 是 | 是 | 获å–和设置URL的主机部分。**原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ | | hostname | string | 是 | 是 | 获å–和设置URL的主机å部分,ä¸å¸¦ç«¯å£ã€‚**原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ | | href | string | 是 | 是 | 获å–和设置åºåˆ—化的URL。**原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ | | origin | string | 是 | å¦ | 获å–URLæºçš„åªè¯»åºåˆ—化。**原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ | | password | string | 是 | 是 | 获å–和设置URL的密ç 部分。**原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ | | pathname | string | 是 | 是 | 获å–和设置URL的路径部分。**原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ | | port | string | 是 | 是 | 获å–和设置URL的端å£éƒ¨åˆ†ã€‚**原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ | | protocol | string | 是 | 是 | 获å–和设置URLçš„å议部分。**原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ | | search | string | 是 | 是 | 获å–和设置URLçš„åºåˆ—化查询部分。**原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ | | searchParams<sup>(deprecated)</sup> | [URLSearchParams](#urlsearchparamsdeprecated) | 是 | å¦ | 获å–URLSearchParams表示URL查询å‚数的对象。<br/>- **说明:** æ¤å±žæ€§ä»ŽAPI version 7开始支æŒï¼Œä»ŽAPI version 9开始被废弃。建议使用params<sup>9+</sup>替代。 | | params<sup>9+</sup> | [URLParams](#urlparams9) | 是 | å¦ | 获å–URLParams表示URL查询å‚数的对象。**原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ | | username | string | 是 | 是 | 获å–和设置URL的用户å部分。**原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ | **示例:** ```ts let that = url.URL.parseURL('http://username:password@host:8080/directory/file?foo=1&bar=2#fragment'); console.log("hash " + that.hash) // hash #fragment console.log("host " + that.host) // host host:8080 console.log("hostname " + that.hostname) // hostname host console.log("href " + that.href) // href http://username:password@host:8080/directory/file?foo=1&bar=2#fragment console.log("origin " + that.origin) // origin http://host:8080 console.log("password " + that.password) // password password console.log("pathname " + that.pathname) // pathname /directory/file console.log("port " + that.port) // port 8080 console.log("protocol " + that.protocol) // protocol http: console.log("search " + that.search) // search ?foo=1&bar=2 console.log("username " + that.username) // username username // that.params 返回值为URLParams对象 console.log("params: foo " + that.params.get("foo")) // params: foo 1 ``` ### constructor<sup>(deprecated)</sup> > **说明:** > > 从API version 7开始支æŒï¼Œä»ŽAPI version 9开始废弃,建议使用[parseURL<sup>9+</sup>](#parseurl9)替代。 constructor(url: string, base?: string | URL) URLçš„æž„é€ å‡½æ•°ã€‚ **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | url | string | 是 | 一个表示ç»å¯¹URL或相对URLçš„å—符串。 <br/>如果 url 是相对URL,则需è¦æŒ‡å®š base,用于解æžæœ€ç»ˆçš„URL。 <br/>如果 url 是ç»å¯¹URL,则给定的 base å°†ä¸ä¼šç”Ÿæ•ˆã€‚ | | base | string \| URL | å¦ | å…¥å‚å—符串或者对象,默认值是undefined。<br/>- string:å—符串<br/>- URL:URL对象<br/>- 在url是相对URL时使用。 | **示例:** ```ts let mm = 'https://username:password@host:8080'; let a = new url.URL("/", mm); // Output 'https://username:password@host:8080/'; let b = new url.URL(mm); // Output 'https://username:password@host:8080/'; new url.URL('path/path1', b); // Output 'https://username:password@host:8080/path/path1'; let c = new url.URL('/path/path1', b); // Output 'https://username:password@host:8080/path/path1'; new url.URL('/path/path1', c); // Output 'https://username:password@host:8080/path/path1'; new url.URL('/path/path1', a); // Output 'https://username:password@host:8080/path/path1'; new url.URL('/path/path1', "https://www.exampleUrl/fr-FR/toot"); // Output https://www.exampleUrl/path/path1 new url.URL('/path/path1', ''); // Raises a TypeError exception as '' is not a valid URL new url.URL('/path/path1'); // Raises a TypeError exception as '/path/path1' is not a valid URL new url.URL('https://www.example.com', ); // Output https://www.example.com/ new url.URL('https://www.example.com', b); // Output https://www.example.com/ ``` ### constructor<sup>9+</sup> constructor() URLçš„æ— å‚æž„é€ å‡½æ•°ã€‚parseURL调用åŽè¿”回一个URL对象,ä¸å•ç‹¬ä½¿ç”¨ã€‚ **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang ### parseURL<sup>9+</sup> static parseURL(url: string, base?: string | URL): URL URLé™æ€æˆå‘˜å‡½æ•°ã€‚ **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | url | string | 是 | 一个表示ç»å¯¹URL或相对URLçš„å—符串。 <br/>如果 url 是相对URL,则需è¦æŒ‡å®š base,用于解æžæœ€ç»ˆçš„URL。 <br/>如果 url 是ç»å¯¹URL,则给定的 base å°†ä¸ä¼šç”Ÿæ•ˆã€‚ | | base | string \| URL | å¦ | å…¥å‚å—符串或者对象,默认值是undefined。<br/>- string:å—符串<br/>- URL:URL对象<br/>- 在url是相对URL时使用。 | > **说明:** > > 当入å‚url是相对URL时,调用该接å£è§£æžåŽçš„URL并ä¸æ˜¯ç®€å•åœ°å°†å…¥å‚urlå’Œbase直接拼接。urlå†…å®¹ä¸ºç›¸å¯¹è·¯å¾„æ ¼å¼æ—¶ï¼Œä¼šç›¸å¯¹äºŽbase的当å‰ç›®å½•è¿›è¡Œè§£æžï¼ŒåŒ…括baseä¸pathå—段最åŽä¸€ä¸ªæ–œæ å‰çš„所有路径片段,但ä¸åŒ…括其åŽçš„部分(å‚照示例ä¸url1)。url内容为指å‘æ ¹ç›®å½•çš„æ ¼å¼æ—¶ï¼Œä¼šç›¸å¯¹äºŽ base 的原始地å€ï¼ˆorigin)进行解æžï¼ˆå‚照示例ä¸url2)。 **错误ç :** 以下错误ç 的详细介ç»è¯·å‚è§[通用错误ç ](../errorcode-universal.md)å’Œ[è¯è¨€åŸºç¡€ç±»åº“错误ç ](errorcode-utils.md)。 | 错误ç ID | é”™è¯¯ä¿¡æ¯ | | -------- | -------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 10200002 | Invalid url string. | **示例:** ```ts let mm = 'https://username:password@host:8080/test/test1/test3'; let urlObject = url.URL.parseURL(mm); let result = urlObject.toString(); // Output 'https://username:password@host:8080/test/test1/test3' // urlå†…å®¹ä¸ºç›¸å¯¹è·¯å¾„æ ¼å¼æ—¶ï¼Œæ¤æ—¶baseå‚æ•°çš„path为test/test1,解æžåŽçš„URLçš„path为/test/path2/path3 let url1 = url.URL.parseURL('path2/path3', 'https://www.huawei.com/test/test1'); // Output 'https://www.huawei.com/test/path2/path3' // url内容为指å‘æ ¹ç›®å½•çš„æ ¼å¼æ—¶ï¼Œæ¤æ—¶baseå‚æ•°çš„path为/test/test1/test3,解æžåŽçš„URLçš„path为/path1/path2 let url2 = url.URL.parseURL('/path1/path2', urlObject); // Output 'https://username:password@host:8080/path1/path2' url.URL.parseURL('/path/path1', "https://www.exampleUrl/fr-FR/toot"); // Output 'https://www.exampleUrl/path/path1' url.URL.parseURL('/path/path1', ''); // Raises a TypeError exception as '' is not a valid URL url.URL.parseURL('/path/path1'); // Raises a TypeError exception as '/path/path1' is not a valid URL url.URL.parseURL('https://www.example.com', ); // Output 'https://www.example.com/' url.URL.parseURL('https://www.example.com', urlObject); // Output 'https://www.example.com/' ``` ### toString toString(): string 将解æžè¿‡åŽçš„URL转化为å—符串。 **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **返回值:** | 类型 | 说明 | | -------- | -------- | | string | 用于返回网å€çš„å—符串åºåˆ—化。 | **示例:** ```ts const urlObject = url.URL.parseURL('https://username:password@host:8080/directory/file?query=pppppp#qwer=da'); let result = urlObject.toString(); // Output 'https://username:password@host:8080/directory/file?query=pppppp#qwer=da' ``` ### toJSON toJSON(): string 将解æžè¿‡åŽçš„URL转化为JSONå—符串。 **原å化æœåŠ¡API**:从API version 11 开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.Utils.Lang **返回值:** | 类型 | 说明 | | -------- | -------- | | string | 用于返回网å€çš„å—符串åºåˆ—化。 | **示例:** ```ts const urlObject = url.URL.parseURL('https://username:password@host:8080/directory/file?query=pppppp#qwer=da'); let result = urlObject.toJSON(); ``` ## URLSearchParams<sup>(deprecated)</sup> URLSearchParams接å£å®šä¹‰äº†ä¸€äº›å¤„ç†URL查询å—符串的实用方法,从API version 9开始废弃,建议使用[URLParams](#urlparams9)。 ### constructor<sup>(deprecated)</sup> constructor(init?: string[][] | Record<string, string> | string | URLSearchParams) URLSearchParamsçš„æž„é€ å‡½æ•°ã€‚ > **说明:** > > 从API version 7开始支æŒï¼Œä»ŽAPI version 9开始废弃,建议使用[URLParams.constructor<sup>9+</sup>](#constructor9)替代。 **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | init | string[][] \| Record<string, string> \| string \| URLSearchParams | å¦ | å…¥å‚对象。<br/>- string[][]:å—符串二维数组<br/>- Record<string, string>:对象列表<br/>- string:å—符串<br/>- URLSearchParams:对象<br/>- 默认值:null。 | **示例:** ```ts let objectParams = new url.URLSearchParams([ ['user1', 'abc1'], ['query2', 'first2'], ['query3', 'second3'] ]); let objectParams1 = new url.URLSearchParams({"fod" : '1' , "bard" : '2'}); let objectParams2 = new url.URLSearchParams('?fod=1&bard=2'); let urlObject = new url.URL('https://developer.mozilla.org/?fod=1&bard=2'); let params = new url.URLSearchParams(urlObject.search); ``` ### append<sup>(deprecated)</sup> append(name: string, value: string): void 将新的键值对æ’入到查询å—符串。 > **说明:** > > 从API version 7开始支æŒï¼Œä»ŽAPI version 9开始废弃,建议使用[URLParams.append<sup>9+</sup>](#append9)替代。 **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | name | string | 是 | 需è¦æ’å…¥æœç´¢å‚æ•°çš„é”®å。 | | value | string | 是 | 需è¦æ’å…¥æœç´¢å‚数的值。 | **示例:** ```ts let urlObject = new url.URL('https://developer.exampleUrl/?fod=1&bard=2'); let paramsObject = new url.URLSearchParams(urlObject.search.slice(1)); paramsObject.append('fod', '3'); ``` ### delete<sup>(deprecated)</sup> delete(name: string): void åˆ é™¤æŒ‡å®šå称的键值对。 > **说明:** > > 从API version 7开始支æŒï¼Œä»ŽAPI version 9开始废弃,建议使用[URLParams.delete<sup>9+</sup>](#delete9)替代。 **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | name | string | 是 | 需è¦åˆ 除的键值å称。 | **示例:** ```ts let urlObject = new url.URL('https://developer.exampleUrl/?fod=1&bard=2'); let paramsObject = new url.URLSearchParams(urlObject.search.slice(1)); paramsObject.delete('fod'); ``` ### getAll<sup>(deprecated)</sup> getAll(name: string): string[] 获å–指定å称的所有键值对。 > **说明:** > > 从API version 7开始支æŒï¼Œä»ŽAPI version 9开始废弃,建议使用[URLParams.getAll<sup>9+</sup>](#getall9)替代。 **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | name | string | 是 | 指定的键值å称。 | **返回值:** | 类型 | 说明 | | -------- | -------- | | string[] | 返回指定å称的所有键值对。 | **示例:** ```ts let urlObject = new url.URL('https://developer.exampleUrl/?fod=1&bard=2'); let params = new url.URLSearchParams(urlObject.search.slice(1)); params.append('fod', '3'); // Add a second value for the fod parameter. console.log(params.getAll('fod').toString()) // Output ["1","3"]. ``` ### entries<sup>(deprecated)</sup> entries(): IterableIterator<[string, string]> 返回一个ES6çš„è¿ä»£å™¨ï¼Œè¿ä»£å™¨çš„æ¯ä¸€é¡¹éƒ½æ˜¯ä¸€ä¸ª JavaScript Array。Array的第一项是name,Array的第二项是value。 > **说明:** > > 从API version 7开始支æŒï¼Œä»ŽAPI version 9开始废弃,建议使用[URLParams.entries<sup>9+</sup>](#entries9)替代。 **系统能力:** SystemCapability.Utils.Lang **返回值:** | 类型 | 说明 | | -------- | -------- | | IterableIterator<[string, string]> | 返回一个ES6çš„è¿ä»£å™¨ã€‚ | **示例:** ```ts let searchParamsObject = new url.URLSearchParams("keyName1=valueName1&keyName2=valueName2"); let iter: Iterable<Object[]> = searchParamsObject.entries(); let pairs = Array.from(iter); for (let pair of pairs) { // Show keyName/valueName pairs console.log(pair[0]+ ', '+ pair[1]); } ``` ### forEach<sup>(deprecated)</sup> forEach(callbackFn: (value: string, key: string, searchParams: URLSearchParams) => void, thisArg?: Object): void 通过回调函数æ¥é历URLSearchParams实例对象上的键值对。 > **说明:** > > 从API version 7开始支æŒï¼Œä»ŽAPI version 9开始废弃,建议使用[URLParams.forEach<sup>9+</sup>](#foreach9)替代。 **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | callbackFn | function | 是 | 回调函数。 | | thisArg | Object | å¦ | callbackFn被调用时用作this值,默认值是本对象。 | **表1** callbackFnçš„å‚数说明 | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | value | string | 是 | 当å‰é历到的键值。 | | key | string | 是 | 当å‰é历到的键å。 | | searchParams | [URLSearchParams](#urlsearchparamsdeprecated) | 是 | 当å‰è°ƒç”¨forEach方法的实例对象。 | **示例:** ```ts const myURLObject = new url.URL('https://developer.exampleUrl/?fod=1&bard=2'); myURLObject.searchParams.forEach((value, name, searchParams) => { console.log(name, value, myURLObject.searchParams === searchParams); }); ``` ### get<sup>(deprecated)</sup> get(name: string): string | null 获å–指定å称对应的第一个值。 > **说明:** > > 若查找一个ä¸å˜åœ¨çš„键值对å称时返回值为undefined,从API version 7开始支æŒï¼Œä»ŽAPI version 9开始废弃,建议使用[URLParams.get<sup>9+</sup>](#get9)替代。 **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | name | string | 是 | 指定键值对的å称。 | **返回值:** | 类型 | 说明 | | -------- | -------- | | string | 返回第一个值。 | | null | 如果没找到,返回 null。 | **示例:** ```ts let paramsObject = new url.URLSearchParams('name=Jonathan&age=18'); let name = paramsObject.get("name"); // is the string "Jonathan" let age = paramsObject.get("age"); // is the string '18' let getObj = paramsObject.get("abc"); // undefined ``` ### has<sup>(deprecated)</sup> has(name: string): boolean 判æ–一个指定的键å对应的值是å¦å˜åœ¨ã€‚ > **说明:** > > 从API version 7开始支æŒï¼Œä»ŽAPI version 9开始废弃,建议使用[URLParams.has<sup>9+</sup>](#has9)替代。 **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | name | string | 是 | è¦æŸ¥æ‰¾çš„å‚æ•°çš„é”®å。 | **返回值:** | 类型 | 说明 | | -------- | -------- | | boolean | 是å¦å˜åœ¨ç›¸å¯¹åº”çš„key值,å˜åœ¨è¿”回true,å¦åˆ™è¿”回false。 | **示例:** ```ts let urlObject = new url.URL('https://developer.exampleUrl/?fod=1&bard=2'); let paramsObject = new url.URLSearchParams(urlObject.search.slice(1)); paramsObject.has('bard') === true; ``` ### set<sup>(deprecated)</sup> set(name: string, value: string): void 将与nameå…³è”çš„URLSearchParams对象ä¸çš„值设置为value。如果å˜åœ¨å称为name的键值对,请将第一个键值对的值设置为valueå¹¶åˆ é™¤æ‰€æœ‰å…¶ä»–å€¼ã€‚å¦‚æžœä¸æ˜¯ï¼Œåˆ™å°†é”®å€¼å¯¹é™„åŠ åˆ°æŸ¥è¯¢å—符串。 > **说明:** > > 从API version 7开始支æŒï¼Œä»ŽAPI version 9开始废弃,建议使用[URLParams.set<sup>9+</sup>](#set9)替代。 **系统能力:** SystemCapability.Utils.Lang **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------- | -------- | -------- | | name | string | 是 | å°†è¦è®¾ç½®çš„å‚数的键值å。 | | value | string | 是 | 所è¦è®¾ç½®çš„å‚数值。 | **示例:** ```ts let urlObject = new url.URL('https://developer.exampleUrl/?fod=1&bard=2'); let paramsObject = new url.URLSearchParams(urlObject.search.slice(1)); paramsObject.set('baz', '3'); // Add a third parameter. ``` ### sort<sup>(deprecated)</sup> sort(): void 对包å«åœ¨æ¤å¯¹è±¡ä¸çš„所有键值对进行排åºï¼Œå¹¶è¿”回undefined。排åºé¡ºåºæ˜¯æ ¹æ®é”®çš„Unicode代ç 点。该方法使用稳定的排åºç®—法 (å³ï¼Œå°†ä¿ç•™å…·æœ‰ç›¸ç‰é”®çš„键值对之间的相对顺åºï¼‰ã€‚ > **说明:** > > 从API version 7开始支æŒï¼Œä»ŽAPI version 9开始废弃,建议使用[URLParams.sort<sup>9+</sup>](#sort9)替代。 **系统能力:** SystemCapability.Utils.Lang **示例:** ```ts let searchParamsObject = new url.URLSearchParams("c=3&a=9&b=4&d=2"); // Create a test URLSearchParams object searchParamsObject.sort(); // Sort the key/value pairs console.log(searchParamsObject.toString()); // Display the sorted query string // Output a=9&b=4&c=3&d=2 ``` ### keys<sup>(deprecated)</sup> keys(): IterableIterator<string> 返回一个所有键值对的nameçš„ES6è¿ä»£å™¨ã€‚ > **说明:** > > 从API version 7开始支æŒï¼Œä»ŽAPI version 9开始废弃,建议使用[URLParams.keys<sup>9+</sup>](#keys9)替代。 **系统能力:** SystemCapability.Utils.Lang **返回值:** | 类型 | 说明 | | -------- | -------- | | IterableIterator<string> | 返回一个所有键值对的nameçš„ES6è¿ä»£å™¨ã€‚ | **示例:** ```ts let searchParamsObject = new url.URLSearchParams("key1=value1&key2=value2"); // Create a URLSearchParamsObject object for testing let keys = Array.from(searchParamsObject.keys()); for (let key of keys) { // Output key-value pairs console.log(key); } ``` ### values<sup>(deprecated)</sup> values(): IterableIterator<string> 返回一个所有键值对的valueçš„ES6è¿ä»£å™¨ã€‚ > **说明:** > > 从API version 7开始支æŒï¼Œä»ŽAPI version 9开始废弃,建议使用[URLParams.values<sup>9+</sup>](#values9)替代。 **系统能力:** SystemCapability.Utils.Lang **返回值:** | 类型 | 说明 | | -------- | -------- | | IterableIterator<string> | 返回一个所有键值对的valueçš„ES6è¿ä»£å™¨ã€‚ | **示例:** ```ts let searchParams = new url.URLSearchParams("key1=value1&key2=value2"); // Create a URLSearchParamsObject object for testing let values = Array.from(searchParams.values()); for (let value of values) { console.log(value); } ``` ### [Symbol.iterator]<sup>(deprecated)</sup> [Symbol.iterator]\(): IterableIterator<[string, string]> 返回一个ES6çš„è¿ä»£å™¨ï¼Œè¿ä»£å™¨çš„æ¯ä¸€é¡¹éƒ½æ˜¯ä¸€ä¸ª JavaScript Array。Array的第一项是name,Array的第二项是value。 > **说明:** > > 从API version 7开始支æŒï¼Œä»ŽAPI version 9开始废弃,建议使用[URLParams.[Symbol.iterator]<sup>9+</sup>](#symboliterator9)替代。 **系统能力:** SystemCapability.Utils.Lang **返回值:** | 类型 | 说明 | | -------- | -------- | | IterableIterator<[string, string]> | 返回一个ES6çš„è¿ä»£å™¨ã€‚ | **示例:** ```ts const paramsObject = new url.URLSearchParams('fod=bay&edg=bap'); let iter: Iterable<Object[]> = paramsObject[Symbol.iterator](); let pairs = Array.from(iter); for (let pair of pairs) { console.log(pair[0] + ', ' + pair[1]); } ``` ### toString<sup>(deprecated)</sup> toString(): string 返回åºåˆ—化为å—符串的æœç´¢å‚数,必è¦æ—¶å¯¹å—符进行百分比编ç 。 > **说明:** > > 从API version 7开始支æŒï¼Œä»ŽAPI version 9开始废弃,建议使用[URLParams.toString<sup>9+</sup>](#tostring9)替代。 **系统能力:** SystemCapability.Utils.Lang **返回值:** | 类型 | 说明 | | -------- | -------- | | string | 返回åºåˆ—化为å—符串的æœç´¢å‚数,必è¦æ—¶å¯¹å—符进行百分比编ç 。 | **示例:** ```ts let urlObject = new url.URL('https://developer.exampleUrl/?fod=1&bard=2'); let params = new url.URLSearchParams(urlObject.search.slice(1)); params.append('fod', '3'); console.log(params.toString()); // Output 'fod=1&bard=2&fod=3' ``` <!--no_check-->