1.什么是REST api?
REST是REpresentational State Transfer的缩写,就算直接看英文(代表的,状态,传输)也会让人有点懵,不知道具体意义,但是可以简单理解为它是一种软件架构风格的标准,是一种API,知道怎么用就好。
2.REST有什么优点?
(1)简单(simple),标准(standardized)
你不需要去关心怎么格式化你的数据,或者担心每次如何格式化Request请求,REST是一种标准格式,并且有着广泛应用。
(2)它是可延展(scalable),无状态的(stateless)
当你的服务器状态变得复杂之后,你可以便捷的修改REST。同时你不需要去关心每个数据的状态,不需要担心如何在服务器和客户端之间追踪数据路径。
(3)性能强(high performance)
这是因为它大多数情况下支持cache。
3.REST如何使用?
jonh想向Mary问候,首先需要发送一个POST请求到message API,之后这个API带着信息传到服务器,服务器把信息储存在数据库中。
那么问题来了,Mary现在和服务器没有连接,她怎么知道有没有人给她发消息呢?
比较老的方法是使用短轮询(轮询的意思是英国议会的那种,各个参议院轮流向首相询问最近的政务)(short polling),Mary向服务器发送一个GET请求,看看有没有自己的消息。短轮询需要Mary每隔x秒向服务器发送一次GET请求,所以这就造成了延迟,就算两条消息是紧接着发的,Mary也必须在x秒之后才能收到,同时服务器压力也很大,一直都有向服务器要数据的请求,一旦有很多人向服务器同时发出请求,服务器可能就失控了。有一个可以有轻微改善的方法是使用长轮询(long polling),让Mary不要一直发request了,第一次发了request之后服务器就拿在手里(hold on)不作应答,等到数据库收到信息之后再应答(respond),长轮询比短轮询好一点,但是还是不太行。所以REST api方便是方便,但只能用在小型应用上,比如我们自己做着玩的小APP。
4.什么是websocket?
那么我们该怎么处理在大型应用上的消息传输呢?websocket就应运而生了。
聊天应用从John和Mary的房间都向服务器建立一个连接(Establish Connection),告诉服务器自己已经准备好接受数据了。
websocket本质是建立了一个双向连接,现在主流的浏览器都已经支持websocket了。
参考资料:
REST API (HTTP) vs Websockets - Concept Overview With Example
What is a REST API?