前两天的文章都反复提到了HTTP协议,简单来说http是运行在TCP/IP上的超文本传输协议,客户端可能发送给服务器什么样的消息而又应该得到什么样的回应,是由http协议来规定和实现的。
今天再来讲一个web接口开发的基本概念,什么是url?什么是uri。其实,在生活中,稍微有点网络常识的同学,经常会接触一个概念url,也很习惯的把他理解成网址链接,例如把这篇文章的url复制一下给我吧。
URL的专业术语叫资源定位符 ,URI叫统一资源标识符。他们之间的关系通过下图可以看出,URL只是URI的一个子集。
要理解上面的概念略微有点抽象,二者的区别在于,URI表示请求服务器的路径,定义这么一个资源。而URL同时说明要如何访问这个资源(http://)。
我们继续用唐诗三百首的API链接来说明他的组成关系:
http://api.tianapi.com:80/txapi/poetries/?key=XXX&num=3
为了准确描述一组web资源的获取方式,我们把上面的链接分为三个部分,黄色部分是访问它时所用的网络协议(http超文本协议),绿色部分是主机别名和默认的端口号、蓝色部分是路径,红色部分是查询字符串(query string),蓝色和红色部分之间还有个默认的index文件。访问链接后,服务器就会返回一段json文本给用户。
今天我们把互联网上某个具体的资源(一个网页、一张图片)比如成一个人,那么URI就相当于这个人的身份证号码,它标识了这个人不重复的唯一编号,通过身份证号我们就能确定某个唯一的人。
我们再举一个URL的例子,通过描述一个人的具体位置来定位某个唯一的人。
中国邮政编码协议://上海市/嘉定区/XXX小区/3号楼/XX室.XX人
通过上面可以看出,URL同样可以起到了URI的作用(确定一个具体的人),所以URL是URI的子集。
用一段术语总结:URI是以一种抽象的,高层次概念定义统一资源标识,而URL则是具体的资源标识的方式。URL是一种URI。
大家在调用天行数据API接口时,一定要按照接口文档来,api地址中的任何问号?,斜杠/(包括末尾部分)都不要省略。省略地址中的任何符号,那么描述和定位他的方式就发生了变化,导致不能获取资源或者发生其他错误。
具体关于URI的概念非常抽象,URI子集除了URL还有URN(统一资源名称),大家感兴趣想详细了解可以网络搜索一下。