我已经阅读了维基百科,但仍然无法完全理解。为什么很多地方都将API称为REST API?
REST不是一个具体的网络服务,而是一种管理状态信息的设计概念(架构)。这方面的里程碑论文是Roy Thomas Fielding的博士论文(2000年),题为“基于网络的软件架构的体系结构风格和设计”(可从加州大学尔湾分校在线获取,链接)。
首先阅读Ryan Tomayko的文章《我如何向妻子解释REST》;这是一个很好的起点。然后阅读Fielding的真正的博士论文。这并不复杂,也不长(六章,180页)!(我知道你们学校的孩子喜欢简短明了)。
编辑:我觉得尝试解释REST是没有意义的。它有太多的概念,如可扩展性、可见性(无状态)等等,读者需要理解,最好的理解来源是实际的博士论文。这远不止于POST / GET等。
REST是一种软件设计模式,通常用于Web应用程序。通俗地说,这意味着它是许多不同项目中广泛使用的想法。它代表REpresentational State Transfer。 REST的基本思想是将服务器端的对象(例如数据库表中的行)视为可以创建或销毁的资源。
最基本的理解REST的方法是格式化您的Web应用程序URL的方法。例如,如果您的资源称为“帖子”,那么:
/posts
是用户访问所有帖子用于显示的方式。
/posts/:id
是用户根据其唯一ID检索和查看单个帖子的方式。
/posts/new
是您显示用于创建新帖子的表单的方式。
向/users
发送POST请求是创建新帖子的方式。
向/users/:id
发送PUT请求是更新给定帖子属性的方式,再次通过唯一ID进行识别。
向/users/:id
发送DELETE请求是删除给定帖子的方式,也是通过唯一ID进行识别。
据我所知,REST模式主要是由Ruby on Rails框架推广(面向Web应用程序),该框架非常注重RESTful路线。尽管我可能错了。
我可能不是最合格的人来谈论它,但这是我学习它的方式(特别是针对Rails开发)。
当有人提到“REST API”时,通常他们所指的是使用RESTful URL检索数据的API。
REST
是一种基于网络的软件架构的设计和风格。
REST
概念被称为资源。资源的表示必须是无状态的,并通过某种媒体类型进行表示。一些媒体类型的例子包括XML
,JSON
和RDF
。组件操作资源。组件通过标准统一接口请求和操作资源。在HTTP的情况下,此接口由标准HTTP操作(例如GET
,PUT
,POST
,DELETE
)组成。
REST
通常使用HTTP
,主要是由于HTTP的简单性及其与RESTful原则的非常自然的映射。但是,REST并不绑定到任何特定协议。
客户端-服务器通信
客户端-服务器架构具有非常明显的关注点分离。所有以RESTful风格构建的应用程序也必须基于客户端-服务器原则。
无状态
每个客户端请求服务器都需要完全表示其状态。服务器必须能够完全理解客户端请求,而不使用任何服务器上下文或服务器会话状态。因此,所有状态都必须保留在客户端上。稍后我们将更详细地讨论无状态表示。http://en.wikipedia.org/wiki/Representational_State_Transfer
基本思想是,不再与服务器保持持续连接,而是发出请求,获取一些数据,向用户显示这些数据,但可能不是全部,然后当用户需要更多数据或将一些数据传递给服务器时,客户端会启动新状态的更改。