基本的博客网站已经建设完毕。书中第14章API部分,提到了Web服务的REST架构。什么叫架构,作为一个小白,一听到架构这个词觉得好高大上,后来看了下国外文献,里面有个 architectural,妈的不就是建筑么!!盖个房都要按照基本法,不能瞎盖,同理,Web服务器也要按照一定的原则来搭建。REST是比较流行的搭法,遵循6个特点,换句话说,符合下面6个特征的架构方式,就是RESTful的
- 客户端-服务器
- 无状态
- 缓存
- 接口统一
- 系统分层
- 按需代码
客户端-服务器
客户端就是客户端,服务器就是服务器,两者必须有明确界限
无状态
服务器不保存任何客户的状态,客户端必须自己提供足够的信息。
这个怎么理解呢?拿看病来举例,你去医院看病,一般的流程是
挂号-看病-缴费-拿药
这四项服务都是由4个服务器提供,你先去挂号,拿到挂号单,然后带着挂号单,去医生那看病,把挂号单给医生看下你挂过号了,然后医生给你看病,看完开个药单,让你去缴费,你带着药单先去缴费处付钱,拿到收据后凭收据去药房拿药。想想看,整个过程是不是都是你一个病人带着各种凭证去各个服务窗口享受服务?而服务人员只需看下你的单子,就能立马给你提供服务了。这就是生活上的无状态。如果不这样做呢?你去挂号,挂完了柜姐领着你去找王医生看病,说你已经挂过号了,王医生就给你看病,看完领着你去缴费处付药钱,然后王医生走了。你付完钱,柜姐再带着你去药房去拿药,跟药房里的服务员说你已经付过钱了,直接拿药就行。整个流程下来,必须得4个服务器之间同步信息才能完成,这样是不是超级傻逼?所以客户端请求资源的时候,必须自己带着必要的信息去找服务器,服务器只负责提供请求的数据。
缓存
服务器的响应可以标记为可缓存和不可缓存,优化性能
接口统一
客户端访问服务器资源时使用的协议必须一致
系统分层
客户端和服务器之间可按需插入代理,缓存,网关
按需代码
客户端可以选择从服务器上下载代码,在客户端上执行
资源是核心
资源是REST架构的核心概念
每个资源都用URL来唯一标识,如某个评论api/comments/12
资源的集合也要有URL来唯一标识,且习惯上在末尾加‘/’,如所有评论:/api/comments/