1. URL用来干嘛?
首先,URL的作用就是用来 “定位” 的。学过营销的同学一定对这个词有反应,因为营销学中也有一个叫做 “定位” (Positioning)的东西,这俩可不是一个东西。
我们先从自己的电脑开始说起。
如果我们要从自己的电脑上打开一个Axure RP画好的原型,要怎么去找呢?先在记忆里找一下,我们把它放到了电脑的D盘中的工作目录下面。这个时候就产生了一个叫做 “路径” 的属性,就像下面这样。
D:\工作\2020定稿版5-再也不改版8-打死也不改版11.rp
我们可以发现,这个路径明显分成了三个部分:
- 开头的 “D:” 代表了D盘,它就是传说中的 “盘符” ;所以C盘就是“C:”,E盘就是“E:”,当然,我说的都是在Windows系统下;
- 之后的 “工作” ,在Windows系统的“资源管理器”(对,就是你通过“我的电脑”或者“计算机”进去的那个东西)里应该是一个叫 “文件夹” 的东西。在路径当中,我们可以简单叫它是 “目录” 或者 “路径” ,在其他软件里,这两个词经常互相替代;如果文件夹是一个套一个的,那么这里会出现多级目录,目录名之间用 “\” (Windows系统)或 “/” (Mac OS X,Linux/UNIX)分割;
- 最后就是我们的文件名了,这个跟我们从Windows资源管理器中看到的文件名大体相同,只不过有的电脑设置了“隐藏已知文件类型的扩展名”,也就是后边的 “.rp” 被隐藏了;
有了这一行路径,但我们想打开这个原型文件的时候,就可以直接输入完整路径打开就行了,而不需要一层一层的打开文件夹了。
好了,现在说回URL。
“URL” ,全称 “Uniform Resource Locator” ,也有说是 “Universal Resource Locator” 的,总之就是“范围很大、管得很宽”的意思。中文通常都翻译为 “统一资源定位符” 。它的出现与互联网的出现息息相关。互联网出现之后,我们就不只是访问自己电脑上的文件了,也想要方位别人的电脑上的文件(也包括一种叫做“服务器”的“电脑”)。
那么问题来了:
- 第一,计算机之间的一次信息交换可没有那么容易。这就像我们人与人之间说话一样,首先你得确定对方是 活的、是清醒的、是讲相同语言的 ,这时候才具备了基本的交流的条件。
- 第二,类比上面我们访问自己电脑文件的过程,我们还需要解决一个问题,就是我们怎么知道想要的那个文件,在别人电脑上的什么位置呢?
- 第三,当然了,即使满足了上面的两个条件,交流的结果也可能是对方根本就不知道你想要的信息,这时对方就会 “一脸404” ,这个我们后面再说;
那么这个时候,就用上URL了。URL也有自己语法,跟学校英语课上老师告诉你“be动词后面要加动词的现在分词”差不多。
什么?没看懂?那我换成这个试试:
简体中文://张三:PPT/近期工作/重点项目/xxx项目.进度汇报?时长=10分钟&要求=别TM说废话#直接从重点开始说
写成这样,即使我不解释,你也大概能看出来时在说什么事了吧?通过这个例子,我们能发现URL其实分了几个部分:
- 首先是协议部分,也就是Protocol的部分,也有人管这部分叫做Schema,无所谓。这部分就是大家常见的http/https/ftp/file等等;当然,在移动端还有另一种应用,我们下面再说;
- 第二部分就是hostname。这部分买过域名的朋友一定不陌生,就比如百度的域名就是 “baidu.com” 。那平时前面出现的 “www” 又是什么呢?那个叫 “子域名” 。还有一种叫法是按照层级来,baidu.com是一级域名,那www就是二级了。二级域名中,最常见的官网门户一般都用www;当然也可以根本不用二级域名,比如人家新浪微博(https://weibo.com/)就不用,但新浪微博的H5版本就用了(https://m.weibo.com/);其他二级域名,一般会按照公司里的BU、业务线、产品线等,或者查看的端之类的进行划分。
2. App中的URL Schema
如果你是做移动端App的产品,可能还见过一系列叫做 “URL Schema” 的东西,还有一个相关联的技术概念叫 “DeepLink”。URL前面已经说了,主要说说这个Schema。本来吧,Schema本身代表的只是一种方式,比如前面说的协议(Protocol)的部分,每种协议就可以视作一种Schema。再比如我上面胡诌的那个URL,其实就以可以被称作 “工作汇报 Schema” 。
不过在App这个特定的语境中,它代表的是根据约定的格式,来实现不同应用之间的跳转和数据交换。所以,没有它,你怎么“跳转到微信”呢?这些URL Schema写起来,也比较像一个“正常”的URL的样子,大致的语法是这样的:
比如这种跳转到微信朋友圈的,就是这种:
3. URL是怎么用的?
最常见的应用场景,就是根据URL向服务器请求数据了。就比如在百度上搜一个问题、在淘宝上搜一个商品、在微信上搜一个人等等。在这个过程中,首先通过URL向服务器发出一个 “请求”(Request) ;服务器会返回一个 “响应”(Response) ,其中就包括了想要的信息。浏览网站、使用App等这些基本的场景中,都在使用URL来获取数据。
说到这,大家可能还觉得没什么,跟自己的日常工作有点距离。不过接下来要说的应用场景,可就是大家比较常见的了。
1)数据埋点
这可是个跨领域的知识点了。在一些运营和数据分析的群里,也可能看到不少同学对于埋点方式是比较关心的。其实作为埋点的基础,如何把App页面上的各种元素标记出来,这里就可以用到URL了(其实更准确的说是URI,下面我们会提到)。
比如,一个在App中的第二个Tab页的第三个楼层的轮播图的排第四位的第五个备选图片,怎么在埋点中清晰地表示出来呢?可以大致使用URL中路径的部分,那么就会是这样的:
index/tab/2/floor/3/slide/4/image/5
如果其中涉及到了根据推荐策略自动更新轮播图中的图片,那么还可以在这当中加入策略的信息,比如:
index/tab/2/floor/3/slide/recModel/v2.0/2020501/4/
其中recModel/v2.0/2020501
的部分就代表了使用的模型、模型的版本以及数据集的版本。
2)数据存储
再说一个简单一点的,就比如在大数据领域,存储在HDFS的Hive表,也有自己的路径,比如:
不过这个案例比较偏底层技术系统了,产品同学可能接触得少一些。
4. 那些常见的404
你一定遇到过网页打不开的情况,也会经常接触到一些错误,比如404、500、503等等。甚至,像404这种常见错误,已经被大量使用在文化商品上,比如印着404的T恤等等。
这些数字编码被称作 “状态码” ,来自于http协议,会出现在前面提到的 “相应”(Response) 当中。不过解决技术问题不在产品经理的职责范围内,我只放一个说明定义的链接,有兴趣可以做延伸阅读:《HTTP/1.1: Status Code Definitions》。
不过这个部分其实还有一个重要的点—— “标准化” 。
前面提到的这些状态码,就是对状态的一种标准化。在产品经理的工作中,也有一些是要用到 “标准化” 概念的。比如,在我们说“想做一个平台”的时候,平台型产品的必备条件就是要求业务要经过“标准化”。非标准化的业务,是无法通过平台化来扩大规模的。
因此,如果我们想通过一个平台型产品,来扩大自己公司的业务规模,那么标准化是必须要考虑的问题。即使是用在公司内部,标准化也更容易与公司的其他系统做交互,从而让整个业务跑起来。
当然,说到这,还想起来一个叫 “状态机” 的东西,放在其他篇章再讲吧。
5. URL之外还有个URI?
了解得稍多一些的朋友,可能会知道在URL以外还有概念更广的 “URI” 。怎么说呢,这俩吧,应该是包含关系。“URI” ,全称叫 “Uniform Resource Identifier” ,跟URL一样,也有人说应该是 “Universal Resource Identifier” 。中文名统一翻译成 “统一资源标识符” 。所以,如果标识符当中包含了路径和协议什么的,那也就等于定位符了。所以这两个嘛,其实没有特别清晰的界限,一些讲解内容会说URL是URI的一种具体应用,我觉得逻辑上也合理。
6. 什么是URL Rewrite?
URL出现之后,很快出现了一个问题:我不想让别人知道我自己电脑上的数据存在哪了,这会带来很大的安全问题。这就像,我要借给朋友一样东西,但是我希望由我自己拿到家门口给他,而不是让他进到我家里自己拿,很可能顺便带走一些别的……
为了避免这样的问题,就出现了一种叫做 “URL Rewrite” 的技术,中文一般翻译成 “URL重写” ,也是翻译得很耿直了。那么Rewrite之前和之后的URL有什么区别呢?为了方便大家理解,我们还是从借给朋友东西这个例子来讲:
重写之前的例子是这样的:
借东西://我家/二楼/卧室/写字台/玻璃板下/学校毕业照.png
但是这样写的话,朋友除了知道我家有毕业照之外,还知道了我家有二楼、二楼有写字台、写字台上有玻璃板、玻璃板下压着一些东西。那么,玻璃板下面会不会还压着别的东西呢?为了不暴露这么多的信息于是对URL进行了重写。
重写之后是这样的:
借东西://我家/照片/学校毕业照.png
同时,我自己需要维护一个映射关系,照片
就代表了二楼/卧室/写字台/玻璃板下
。从此,大家还是能通过上面Rewrite之后的路径来定位这张照片,但是我家到底有几楼、到底有没有写字台等等这些信息只有我自己知道了。
7. http和https有什么区别?
哦,这个暂时不懂也行。嗯。