spring中REST和RESTful的区别以及基本实现
REST(Representational State Transfer)和RESTful都是一种基于HTTP协议的Web服务架构风格,是现代Web应用的重要组成部分。它们都是用来描述和设计分布式系统的架构风格,REST本身不是一种标准或者协议,而RESTful是一种实现REST架构风格的Web服务的方式。虽然它们有一定的相似性,但是它们还是有着一些基本的区别。
区别:
1.定义: REST本身不是一种标准或者协议,本质上是一种架构风格;而RESTful是实现REST风格的Web服务。
2.表达方式: REST通过GET、POST、PUT、DELETE和OPTIONS等几个HTTP方法来表示资源状态的转移,而RESTful则使用HTTP协议中的各种方法,如GET、POST、PUT、DELETE等方法,但是RESTful也遵循REST的约束条件。
3.语义: REST更关注资源本身的定义以及对资源进行的操作,所以它的URL通常以名词作为结尾;而RESTful则更关注对资源的操作,所以它的URL通常以动词作为结尾,例如:/create-user、/delete-user等。
4.灵活性: REST更灵活,可以采用不同的协议来实现,比如SOAP、XML-RPC等,而RESTful则是基于HTTP协议的REST风格。
实现:
1.资源
在RESTful 架构中,“资源”是一种抽象的概念,可以代表任何东西。在设计RESTful时,首先要确定资源的类型,资源可以是一个对象、一组对象或某些非物理的东西,如Java对象、数据库表、文件或者是网络服务等。
2.资源标识
RESTful中每一个资源都需要一个 的标识符(URI),用来区分资源和其他的资源,URI可以是简单的术语,或是复杂的路径。URI由两部分组成,即主机地址和资源标识符。例如:http://www.example.com/customers/1。
3.资源的操作
资源与状态的转换可以使用 HTTP 协议本身提供的几个动词(GET、POST、PUT、DELETE)来完成。HTTP动词定义了对资源的操作类型。常用的操作包括:
GET:获取资源信息。
POST:新增资源。
PUT:更新资源。
DELETE:删除资源。
4.结构化数据格式
RESTful服务返回的数据一般使用结构化的数据格式,最常见的数据格式包括XML和JSON。通过使用这种结构化数据格式,RESTful 服务可以有效地进行数据交换。
5.状态码
HTTP状态码代表了 RESTful 操作的结果状态。在 RESTful 架构中,响应通常包括状态码、HTTP头和响应正文等信息。状态码分为 5 类:信息状态码、成功状态码、重定向状态码、客户端错误状态码、服务端错误状态码。
总之,RESTful 并不是一种新的技术,而是一种基于 HTTP 的分布式架构风格。它将资源、URI、动词、状态码以及数据格式等概念和技术有机地结合起来,为现代分布式系统的开发提供了很好的思路和方向。
