URI 处理

Uri 类提供了对字符串进行编码和解码的函数,简化开发者对Uri的处理。

URI 编码和解码

要对URI中具有特殊含义的字符(例如 /、:、&、#)进行编码和解码,请使用encodeFull()decodeFull()方法。这些方法适用于编码或解码完整的URI,保留完整的特殊URI字符。

var uri = 'http://example.org/api?foo=some message';
// 注意,只有some和message中间的空格被编码
var encoded = Uri.encodeFull(uri);
assert(encoded == 'http://example.org/api?foo=some%20message');

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

对URI组件进行编码和解码

要对URI中具有特殊含义的所有字符串字符进行编码和解码,包括(但不限于)/&:,请使用encodeComponent()decodeComponent()方法。

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

// 注意每个特殊字符的编码。例如 / 被编码为%2F
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

可以使用Uri()构造函数从各个部分构建一个URI

var uri = Uri(
    scheme: 'http',
    host: 'example.org',
    path: '/foo/bar',
    fragment: 'frag');

assert(uri.toString() == 'http://example.org/foo/bar#frag');

公众号“编程之路从0到1”

20190301102949549

Copyright © Arcticfox 2020 all right reserved,powered by Gitbook文档修订于: 2024-06-09 20:22:55

results matching ""

    No results matching ""