美文网首页Java区块链大学程序那些事
URL URI傻傻分不清楚,dart告诉你该怎么用

URL URI傻傻分不清楚,dart告诉你该怎么用

作者: flydean程序那些事 | 来源:发表于2021-12-01 08:41 被阅读0次

简介

如果我们要访问一个网站,需要知道这个网站的地址,网站的地址一般被称为URL,他的全称是Uniform Resource Locator。那么什么是URI呢?

URI的全程是Uniform Resource Identifier,也叫做统一资源标志符。

URI用来对资源进行标记,而URL是对网络上的资源进行标记,所以URL是URI的子集。

了解了URI和URL之间的关系之后,我们来看看dart语言对URI的支持。

dart中的URI

dart中为URI创建了一个专门的类叫做Uri:

abstract class Uri 

Uri是一个抽象类,他定义了一些对URI的基本操作。它有三个实现类,分别是_Uri,_DataUri和_SimpleUri。

接下来,我们一起来看看,dart中的Uri都可以做什么吧。

encode和decode

为什么要对encode URI?

一般来说URI中可以包含一些特殊字符,像是空格或者中文等等。这些字符在传输中可能不被对方所认识。所以我们需要对Uri进行编码。

但是对于URI中的一些特殊但是有意义的字符,比如: /, :, &, #, 这些是不用被转义的。

所以我们需要一种能够统一编码和解码的方法。

在dart中,这种方法叫做encodeFull() 和 decodeFull():

var uri = 'http://www.flydean.com/doc?title=dart uri';

var encoded = Uri.encodeFull(uri);
assert(encoded ==
    'http://www.flydean.com/doc?title=dart%20uri');

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

如果要编码所有的字符,包括那些有意义的字符:/, :, &, #, 那么可以使用encodeComponent() 和 decodeComponent():

var uri = 'http://www.flydean.com/doc?title=dart uri';

var encoded = Uri.encodeComponent(uri);
assert(encoded ==
    'http%3A%2F%2www.flydean.com%2Fdoc%3Ftitle%3Ddart%20uri');

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

解析URI

URI是由scheme,host,path,fragment这些部分组成的。我们可以通过Uri中的这些属性来对Uri进行分解:

var uri =
    Uri.parse('http://www.flydean.com/doc#dart');

assert(uri.scheme == 'http');
assert(uri.host == 'www.flydean.com');
assert(uri.path == '/doc');
assert(uri.fragment == 'dart');
assert(uri.origin == 'http://www.flydean.com');

那么怎么构造Uri呢?我们可以使用Uri的构造函数:

var uri = Uri(
    scheme: 'http',
    host: 'www.flydean.com',
    path: '/doc',
    fragment: 'dart');
assert(
    uri.toString() == 'http://www.flydean.com/doc#dart');

总结

dart为我们提供了非常简单的Uri的使用工具。

本文已收录于 www.flydean.com

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

相关文章

  • URL URI傻傻分不清楚,dart告诉你该怎么用

    简介 如果我们要访问一个网站,需要知道这个网站的地址,网站的地址一般被称为URL,他的全称是Uniform Res...

  • url和uri傻傻分不清楚

    首先URI是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。 而U...

  • URI与URL傻傻分不清楚?

    前言 总所周知,缓存是解决Http1.1协议传输性能的问题中最主要的手段。 缓存既可以存在于浏览器上,也可以存在于...

  • URI、URL傻傻分不清

    URI是什么?有什么用? URI(统一资源标识符)是标识逻辑或物理资源的字符序列,与URL类似,也是一串字符。通过...

  • WebView

    1,引言 :通过Intent调用系统浏览器Uri uri=Uri.parse(url);//url为你要连接的...

  • URL, URI, URN三者区别

    URL和URN都是URI的子集 URL和URN都是URI,但是URI不一定是URL或者URN 关于URL: URL...

  • I used to 和I am used to

    你是不是有过这样的迷惘,在面对”I used to”和”I am used to”时傻傻分不清楚?是否很彷徨怎么用...

  • 初识HTTP URI URL URL URI:Uniform Resource Identifie...

  • HTTP基本原理

    URL/URI URI 和 URL 两个术语,URI 全称为 Uniform Resource Identifie...

  • android本地mipmap图片转url、绝对路径转URL

    标签: url uri file pathFile to URI:File file = ...;URI uri ...

网友评论

    本文标题:URL URI傻傻分不清楚,dart告诉你该怎么用

    本文链接:https://www.haomeiwen.com/subject/sutsxrtx.html