问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2024-09-25 23:23

我来回答

1个回答

热心网友 时间:2024-10-20 18:42

简介

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

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

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

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

dart中的URI

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

abstractclassUri

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

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

encode和decode

为什么要对encode URI?

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

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

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

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

varuri='http://www.flydean.com/doc?title=darturi';varencoded=Uri.encodeFull(uri);assert(encoded=='http://www.flydean.com/doc?title=dart%20uri');vardecoded=Uri.decodeFull(encoded);assert(uri==decoded);

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

varuri='http://www.flydean.com/doc?title=darturi';varencoded=Uri.encodeComponent(uri);assert(encoded=='http%3A%2F%2www.flydean.com%2Fdoc%3Ftitle%3Ddart%20uri');vardecoded=Uri.decodeComponent(encoded);assert(uri==decoded);解析URI

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

varuri=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的构造函数:

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

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

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

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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求这张图片的画师和p站ID 贱人是碰不完的,有些人说遇到贱人打死他,可没有几个能那样的人吧 魅族16相机启动异常 除青春痘小妙招 青春痘怎么治好 ...就长了青春痘,可能是因为我经常吃油炸的,比如薯条、鸡翅等热气的东西... 游戏私服是什么意思 湖北省武昌儿童医院怎么走 王者荣耀版本更新后信誉积分会恢复吗 如果一个游戏出了私服,那以前的官服 会面临停服问题吗? 私服的游戏和官服的有什么差别啊,是自己改吗?私服上的玩家数据谁来维护... JWT、JWE、JWS 、JWK 都是什么鬼?还傻傻分不清? 梦见被认识的一个人,先是梦见我洗头发什么的,他在帮忙。后来又梦到他... 红米note4x能用小米手环吗 红米note升4g后怎么连运动手环 我晚上那次连续三天梦到他。。然后隔1天又梦到然后隔了两天又梦到... 连续三天梦到同一个人是什么意思? 连续梦见一个人三天代表缘分尽了是真的吗 不同的人连续梦见一个人三天... 湖南十五种小吃?(长沙必吃美食?) 经济学 金融什么的 从业时候能做什么 券商投行与行研哪个工资高 相亲空调开几度梗? 打拉扎村如何进行村务公开及财务管理? 有谁知道八十年代一部恐怖片的片名!?当时看的叫鬼吃人! 提问我在深圳交了5年的社保,现在想回江西老家,老家没有工作咋办_百度知 ... 在广东工作几年时已缴纳社保且没退保,后回赣州工作,以后能自动将两地的... 我不是深圳户口在这办理了社保,请问不在这上班后回老家能不能自己交... 在深圳買社保1o年,剩五年能轉回家能自己交費嗎。 失业了社保能转回户籍所在地自己交吗 ...社保想转回去继续买,我是城镇户口,请问可以自己交吗 七巧板的基本组成部分有哪些? 设计模式存在哪些关联关系,六种关系傻傻分不清--- UML图示详解_百度知... 在非洲打工时,当地人有哪些行为最让你受不了 ...为什么别人QQ电话我的时候,显示的还是默认的那个呢??我QQ电话别人... 为什么联通的号关机的时候,别人给你发短信或者打电话,等你开机的时候就... 为什么别人打电话给我 没有声音,QQ里是有 就来电铃声没有 怎么回事 朵 ... ...左起第()个数。 1 2 3 4 5 6 7 8 9 10 。。。 在"1 2 3 4 5 6 7 8 9 10=100"中填上加减号,并不改变数字顺序,使式子成 ... 山东育儿假最新规定2022? 力丰牌搅拌机冒黄油怎么办? 广东力丰b30搅拌机和面还用不用压面机? excel复制两个单元格中间添加怎么设置excel复制两个单元格中间添加怎么... 如何在excel两列内容中间插入一个空格 朋友经常向我索取免费的东西,该怎样拒绝? 能不能给我几个免费送QQ的网站 谁能送我免费绝版qq秀的头发,积分全归你! 360问答有什么做得不好的吗?积分兑换的都能够到吗? 360的任务点亮问答图标,我已经回答了一个问题,为什么完不成任务? 为什么在360回答里面已经帮了6个人在做任务里仍然显示未完成?_百度... 为什么360问答“我来回答”许多专业到位的回答不被采用,“我要提问... 讲诚信与善意的谎言 反方资料