如何理解restfulAPI

    Representation State transfer:表征性状态转移,csdn上看到一个博客这么解释这句拗口的话,即用url定位资源,用http动词描述操作。我再补一句操作可能导致资源状态改变。谈到这个状态改变,我觉得就有必要谈一谈http动词及其幂等性和安全性。这个我将在5.1中阐述。继续谈restfulAPI吧,符合restful风格的就是restfulAPI。那么什么是restful风格呢。
    我分四点阐述:资源、URI、统一接口、无状态。
    资源:资源就是网络上的一个实体,它可以是jpg格式的图片,可以是一串字符,可以是txt或html的文本。
    URI :即每一个资源对应一个统一资源标识符,资源由uri唯一标识。而在restful中我们一般用url表示uri。
    统一接口:对资源的操作统一由http动词确定,增删改查即post、delete、put、get。
    无状态:无状态的官方说法是客户端和服务器之间的交互在请求之间是无状态的,从客户端到服务器的每个请求都必须包含理解请求所必需的信息。你可以理解为服务器基本不存储维护状态的信息,一切东西都由客户端去维护。你如你要获取员工的信息,首先需要登录,服务器存储session,请求里设置cookie,cookie和session比较正确,然后才能获取员工信息,这就叫有状态,因为获取信息前必须登录,服务器存储了session,维护了状态。而如果是restful风格的api,员工信息就是一个资源,可以是http://website/employee/1,然后通过在请求头中放token去达到验证的目的。下面我简述一下token的工作原理,用户登陆,服务器根据userid,通过某种算法生成一个签名,userid+签名的组合即为一个token,服务器再把token发送给客户端。客户端下次请求时,携带token,服务器根据userid使用相同的算法再生成一次签名,比较传入的token与生成的token是否一致,一致即校验通过。
    我们可以看到,使用token时,服务器不存储关于token的任何信息。回想一下在携程自测接口,很多接口调用都需要身份认真,你只需传入token即可用postman调用接口,但是你没有进行登录操作啊,你只需要有token就行了,服务器会根据token去验证你的登录状态。token的方法方便做分布式和无状态的操作,考虑session使用在负载均衡的场景下,第一次请求a机器,a机器储存session,第二次请求b机器,b机器可不一定存储了token,再者,就算能通过复制让所有机器都存储session,那得浪费多少存储空间。那如果用集中式的session服务器呢?这样你就一定得做集群,因为集中式的session服务器炸了所有人的session都不能使用啊。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值