REST风格的架构
在第前面,我们介绍了Web服务。其中Web服务又可以分为“大”Web服务及RESTful Web服务。
本章将深入讨论RESTful Web服务及其架构风格。
什么是REST
随着互联网应用、Cloud Native、云计算的兴起,越来越多的应用采用了以HTTP为主的网络通信特别是RESTful(REST风格)的Web服务。RESTful Web服务所提供的API也成为REST API,这类API具有平台无关性、语言无关性等特点,在Cloud Native、微服务等架构中作为主要的通信协议。
那么到底什么样的HTTP算是REST?
一说到REST,大家都耳熟能详,很多人的第一反应就是认为这是前端请求后台的一种通信方式。甚至有些人将REST和RPC混为一谈,认为两者都是基于HTTP的类似的东西。实际上,很少人能详细讲述REST所提出的各个约束、风格特点以及如何开始搭建REST服务。
表述性状态转移(REpresentation State Transfer,REST)描述了一个架构样式的网络系统,比如Web应用程序。它首次出现在2000年RoyFielding的博士论文Architectural Styles and the Design of Network-basedSoftware Architectures中。Roy Fielding还是HTTP规范的主要编写者之一,也是Apache HTTP服务器项目的共同创立者。所以这篇文章一发表,就引起了极大的反响。很多公司或者组织如雨后春笋般宣称自己的应用或者服务实现了REST API。但该论文实际上只是描述了一种架构风格,并未对具体的实现做出规范。所以社会上,各大厂商不免存在浑水摸鱼或者误用、滥用REST。所以在这种背景下,Roy Fielding不得不再次发文做了澄清