当你考虑它时,面向资源的REST范式是不是归结为面向对象(具有受约束的功能,尽可能地利用HTTP)?
我并不一定说这是一件坏事,而是如果它们本质上非常相似,那么理解REST以及这种架构所带来的影响就会变得更加容易.
更新:以下是更具体的细节:
REST资源等同于公共类.私人课程/资源根本不会暴露.
资源状态等同于类公共方法或字段.私有方法/字段/状态根本不会暴露(这并不意味着它不存在).
虽然REST不会在请求之间保留特定于客户端的状态,但它确实保留了所有客户端的资源状态.资源具有状态,与类具有状态的方式相同.
REST资源由URI全局唯一标识,其方式与服务器对象由其数据库地址,表名和主键全局唯一标识的方式相同.虽然没有(还)一个URI来表示这个,但你可以很容易地构造一个.
Mark Cidade.. 21
REST类似于OO,因为它们都将世界建模为接受消息(即方法)的实体,但除此之外它们是不同的.
面向对象强调状态和不透明度的封装,使用对状态进行操作所需的许多不同方法.REST是关于状态和透明度的(表示)的转移.REST中使用的方法数量受到限制,并且在所有资源中都是统一的.与OOP中最接近的ToString()
方法是非常接近于HTTP GET的方法.
对象方向是有状态的 - 您引用一个对象并可以在其上调用方法,同时在对象仍在范围内的会话中维护状态.REST是无状态的 - 您想要对资源执行的任何操作都在单个消息中指定,并且您需要知道的有关该消息的所有内容都将在单个响应中发回.
在面向对象中,没有通用对象标识的概念 - 对象要么在任何特定时刻从其内存地址获取标识,要么是特定于框架的UUID,要么是从数据库密钥获取标识.在REST中,所有资源都用URI标识,不需要实例化或处理 - 它们总是存在于云中,除非服务器以404 Not Found或410 Gone响应,在这种情况下你知道没有资源URI.
REST具有安全性保证(例如,GET消息不会改变状态)和幂等性(例如,多次发送的PUT请求与仅一次具有相同的效果).虽然针对特定面向对象技术的一些指导原则可以说明某些结构如何影响状态,但实际上并没有任何关于面向对象的内容可以说明安全性和幂等性.
REST类似于OO,因为它们都将世界建模为接受消息(即方法)的实体,但除此之外它们是不同的.
面向对象强调状态和不透明度的封装,使用对状态进行操作所需的许多不同方法.REST是关于状态和透明度的(表示)的转移.REST中使用的方法数量受到限制,并且在所有资源中都是统一的.与OOP中最接近的ToString()
方法是非常接近于HTTP GET的方法.
对象方向是有状态的 - 您引用一个对象并可以在其上调用方法,同时在对象仍在范围内的会话中维护状态.REST是无状态的 - 您想要对资源执行的任何操作都在单个消息中指定,并且您需要知道的有关该消息的所有内容都将在单个响应中发回.
在面向对象中,没有通用对象标识的概念 - 对象要么在任何特定时刻从其内存地址获取标识,要么是特定于框架的UUID,要么是从数据库密钥获取标识.在REST中,所有资源都用URI标识,不需要实例化或处理 - 它们总是存在于云中,除非服务器以404 Not Found或410 Gone响应,在这种情况下你知道没有资源URI.
REST具有安全性保证(例如,GET消息不会改变状态)和幂等性(例如,多次发送的PUT请求与仅一次具有相同的效果).虽然针对特定面向对象技术的一些指导原则可以说明某些结构如何影响状态,但实际上并没有任何关于面向对象的内容可以说明安全性和幂等性.