REST是一种网络软件架构设计风格。REST认为网络就是一个资源(Resource)的集合。一个用户(或者一个网络应用程序)可以通过HTTP协议与某个网络应用程序交互——获取(GET)、更改(UPDATE)、建立(CREATE)或者删除(DELETE)其内部的Resource。
什么是Resource呢?发票、订单……任何你在某个应用程序中需要了解和操作的东西。Resource存在于应用程序中,应用程序可以选择以不同的表现形式(Representation)输出Resource——HTML、XML、图形或其他格式。
这样设计实现起来很简单,不需要发明任何新东西。在整体网络应用的性能上还可以通过对Resource使用通用的HTTP缓存技术进行优化,以较少的网络设施支持更多的用户。
相比过去的RPC(远程过程调用)、XML Web Service等等系统间集成方式,REST的抽象方式提供了更好的功能解耦方式,对于应对开发、维护中的需求变化更加敏捷。以资源为中心的设计(Resource-centric Design)还可以减少API设计的复杂性,让开发人员以类似的方式调用外部API可以减少学习的复杂度。正是由于这些原因,很多Web 2.0网站都提供了Restful API作为基于XML Web Service的API的补充或代替。