本模塊提供URI字符串解析的相關功能。
說明:
導入模塊
import uri from '@ohos.uri'
URI
屬性
系統能力: SystemCapability.Utils.Lang
名稱 | 類型 | 可讀 | 可寫 | 說明 |
---|---|---|---|---|
scheme | string | 是 | 否 | 獲取URI 的協議部分。 |
userInfo | string | 是 | 否 | 獲取 URI 的用戶信息部分。 |
host | string | 是 | 否 | 獲取 URI 的主機名部分(不帶端口)。 |
port | string | 是 | 否 | 獲取 URI 的端口部分。 |
path | string | 是 | 否 | 獲取 URI 的路徑部分。 |
query | string | 是 | 否 | 獲取 URI 的查詢部分。 |
fragment | string | 是 | 否 | 獲取 URI 的片段部分 |
authority | string | 是 | 否 | 獲取此URI的解碼權限組件部分。 |
ssp | string | 是 | 否 | 獲取URI的解碼方案特定部分。 |
鴻蒙開發指導文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
命名規則
命名形式:
標準uri定義由以下三個部分組成 [scheme:]scheme-specific-part[#fragment]
- scheme: 協議名,根據需要填寫。例如http、https、ftp、datashare、dataability等。
- scheme-specific-part: URI的特定解碼方案特定部分,由[//][authority][path][?query]組成,根據需要填寫。
- authority: URI的解碼權限組件部分。由[userinfo@]host[:port]組成,根據需要填寫。
- userinfo: 用戶信息,根據需要填寫。
- host: 服務器的主機名部分,當authority存在時,此項必填。
- port: 服務器端口,根據需要填寫。
- path: 路徑信息,根據需要填寫。
- query: 查詢部分,根據需要填寫。
- authority: URI的解碼權限組件部分。由[userinfo@]host[:port]組成,根據需要填寫。
- fragment: 片段部分,根據需要填寫。
URI示例:
const result1 = new uri.URI("ftp://ftp.aaa.bbb.ccc/dddd/eee.txt");
console.log(result1.host) // ftp.aaa.bbb.ccc
console.log(result1.fragment) // null
console.log(result1.path) // /dddd/eee.txt
console.log(result1.scheme) // ftp
console.log(result1.userInfo) // null
console.log(result1.port) // -1
console.log(result1.query) // null
const result2 = new uri.URI("gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles#fragment");
console.log(result2.host) // spinaltap.micro.umn.edu
console.log(result2.fragment) // fragment
console.log(result2.path) // /00/Weather/California/Los Angeles
console.log(result2.scheme) // gopher
console.log(result2.userInfo) // null
console.log(result2.port) //-1
console.log(result2.query) // null
const result3 = new uri.URI("datashare:///com.samples.datasharetest.DataShare/DB00/TBL00");
console.log(result3.host) // null
console.log(result3.fragment) // null
console.log(result3.path) // /com.samples.datasharetest.DataShare/DB00/TBL00
console.log(result3.scheme) // datashare
console.log(result3.userInfo) // null
console.log(result3.port) // -1
console.log(result3.query) // null
const result4 = new uri.URI("https://username:password@host:8080/directory/file?foo=1&bar=2#fragment");
console.log(result4.host) // host
console.log(result4.fragment) // fragment
console.log(result4.path) // /directory/file
console.log(result4.scheme) // https
console.log(result4.userInfo) // username:password
console.log(result4.port) // 8080
console.log(result4.query) // foo=1&bar=2
const result5 = new uri.URI("dataability:///com.example.DataAbility");
console.log(result5.host) // null
console.log(result5.fragment) // null
console.log(result5.path) // /com.example.DataAbility:
console.log(result5.scheme) // dataability
console.log(result5.userInfo) // null
console.log(result5.port) // -1
console.log(result5.query) // null
constructor
constructor(uri: string)
constructor是URI的構造函數。
系統能力: SystemCapability.Utils.Lang
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
uri | string | 是 | 入參對象。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見[語言基礎類庫錯誤碼]。
錯誤碼ID | 錯誤信息 |
---|---|
10200002 | Invalid uri string. |
示例:
let mm = 'https://username:password@host:8080/directory/file?foo=1&bar=2#fragment';
new uri.URI(mm); // Output 'https://username:password@host:8080/directory/file?foo=1&bar=2#fragment';
new uri.URI('https://username:password@host:8080'); // Output 'https://username:password@host:8080';
toString
toString(): string
系統能力: SystemCapability.Utils.Lang
返回適用于URI中的查詢字符串。
返回值:
類型 | 說明 |
---|---|
string | 返回網址的字符串序列化。 |
示例:
const result = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
let result1 = result.toString();
equals(deprecated)
equals(other: URI): boolean
判斷此URI是否與其他URI對象相等。
說明:
從API version 8開始支持,從API version 9開始廢棄,建議使用[equalsTo9+]替代。
系統能力: SystemCapability.Utils.Lang
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
other | URI | 是 | 需要比較的URI對象。 |
返回值:
類型 | 說明 |
---|---|
boolean | 返回true表示相等,否則返回false。 |
示例:
const uriInstance = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
const uriInstance1 = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
uriInstance.equals(uriInstance1);
equalsTo9+
equalsTo(other: URI): boolean
判斷此URI是否與其他URI對象相等。
系統能力: SystemCapability.Utils.Lang
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
other | URI | 是 | 需要比較的URI對象。 |
返回值:
類型 | 說明 |
---|---|
boolean | 返回true表示相等,否則返回false。 |
示例:
const uriInstance = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
const uriInstance1 = new uri.URI('https://username:password@host:8080/directory/file?query=pppppp#qwer=da');
let result = uriInstance.equalsTo(uriInstance1);
checkIsAbsolute
checkIsAbsolute(): boolean
判斷此URI是否為絕對URI(是否定義了scheme組件)。
系統能力: SystemCapability.Utils.Lang
返回值:
類型 | 說明 |
---|---|
boolean | 如果是絕對URI返回true,否則返回false。 |
示例:
const uriInstance = new uri.URI('https://username:password@www.qwer.com:8080?query=pppppp');
console.log(`${uriInstance.checkIsAbsolute()}`); // true
const uriInstance1 = new uri.URI('xxx.com/suppliers.htm');
console.log(`${uriInstance1.checkIsAbsolute()}`); // false
normalize
HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
normalize(): URI
規范化此URI的路徑。
系統能力: SystemCapability.Utils.Lang
返回值:
類型 | 說明 |
---|---|
URI | 返回一個path被規范化后的URI對象。 |
示例:
const uriInstance = new uri.URI('https://username:password@www.qwer.com:8080/path/path1/../path2/./path3?query=pppppp');
console.log(uriInstance.path); // /path/path1/../path2/./path3
let uriInstance1 = uriInstance.normalize();
console.log(uriInstance1.path); // /path/path2/path3
審核編輯 黃宇
-
字符串
+關注
關注
1文章
585瀏覽量
20575 -
鴻蒙
+關注
關注
57文章
2388瀏覽量
42964 -
OpenHarmony
+關注
關注
25文章
3744瀏覽量
16473
發布評論請先 登錄
相關推薦
評論