URI 3个月前

编程语言
831
URI

Uri 类 提供编码和解码字符串用来作为 URI(就是你可能知道的 URL)的函数。这些函数处理 URI 中的特殊字符,比如 & 和 **=**。Uri 类也包含解析和获取 URI 的各个部件的方法——host、port、schema 等等。

编码和解码完全限定的 URI

要编码和解码 URI 中除去那些有特殊意义(比如 /**、:&#)之外的字符,使用 **encodeFull()decodeFull() 方法。这些方法对于编码和解码完全限定的 URI 是非常好的,它们会留下 URI 中完整的特殊字符。

var uri = 'http://example.org/api?foo=some message';

var encoded = Uri.encodeFull(uri);
assert(encoded ==
    'http://example.org/api?foo=some%20message');

var decoded = Uri.decodeFull(encoded);
assert(uri == decoded);

注意只有 somemessage 之间的空格被编码了。

编码和解码 URI 部件

要编码和解码一个字符串在 URI 中有特殊意义的所有字符,包括(但不限于)**/&** 和 :**,使用 **encodeComponent()decodeComponent 方法。

var uri = 'http://example.org/api?foo=some message';

var encoded = Uri.encodeComponent(uri);
assert(encoded ==
    'http%3A%2F%2Fexample.org%2Fapi%3Ffoo%3Dsome%20message');

var decoded = Uri.decodeComponent(encoded);
assert(uri == decoded);

解析 URI

如果你有一个 Uri 对象或者一个 URI 字符串,你可以使用 Uri 的属性获取它的部件比如 path。要从一个字符串创建一个 Uri,使用静态方法 **parse()**:

var uri =
    Uri.parse('http://example.org:8080/foo/bar#frag');

assert(uri.scheme == 'http');
assert(uri.host == 'example.org');
assert(uri.path == '/foo/bar');
assert(uri.fragment == 'frag');
assert(uri.origin == 'http://example.org:8080');

参见 Uri API 索引 了解所有你可以获取的部件。

构建 URI

你可以使用 Uri() 构造函数从独立的部件构建 URL:

var uri = Uri(
    scheme: 'http',
    host: 'example.org',
    path: '/foo/bar',
    fragment: 'frag');
assert(
    uri.toString() == 'http://example.org/foo/bar#frag');
image
EchoEcho官方
无论前方如何,请不要后悔与我相遇。
1377
发布数
439
关注者
2222991
累计阅读

热门教程文档

10.x
88小节
Python
76小节
Vue
25小节
Rust
84小节
Kotlin
68小节