什么是RESTful应用程序?

时间:2014-11-27 08:06:44

标签: rest

过去几年,有很多关于REST的炒作,我试图接受这个原则并理解它的好处。但是,关于REST的一些事情仍然无法实现。我会尽量简明扼要地说:

  • Web应用程序可以被视为RESTful吗?这有什么好处?我可以理解(在某种程度上)许多客户端使用的RESTful服务的优点,但是在开发HTML / JS前端使用的应用程序接口时使用REST原则可以获得什么?
  • REST要求使用粗略映射到CRUD操作的动词,服务器使用表示形式响应,然后将客户端置于新状态。这是否意味着必须通过修改/创建/删除资源以及可能的许多其他相关资源来完成对资源的所有操作?怎么样"原子性"这些操作(即交易)?
  • REST兼容服务应该是自我描述的(通过HATEOAS原则),但缺少元数据使得客户端无法例如创建资源而不确切知道哪些字段(及其类型)是必需的。此信息仍必须在带外提供。我在这里找不到什么东西吗?

我可以提出更多问题,但如果有人能为我澄清这些问题,那就足够了。

2 个答案:

答案 0 :(得分:1)

关于你的问题的一些注释:

1)如果您的Web应用程序是单页应用程序,那么与服务器通信的最简单方法就是它是Rest服务。

对于传统的Web应用程序,我认为“控制器”使用依赖注入与服务层进行通信会更好。

3)是的,当然客户端需要知道它接收的数据的格式。但AFAIK,Rest并没有对如何定义或传输元数据给出任何限制。

HATEOAS原则更多地涉及从给定资源中发现相关资源。 表达这种关系存在不同的惯例,例如: http://stateless.co/hal_specification.html

2)每个Rest操作必须是原子的。如果您需要某种长操作,通常是创建描述操作的资源。从该资源中检索操作的状态,并通过与该资源交互的操作(即取消它)执行任何操作。 请参阅here的示例。

答案 1 :(得分:0)

1.通常,REST架构是在不同的应用程序使用时设计的 本质上客户(外部api消费者,移动应用程序等)。在这种情况下,开发成本将完全收回。 开发真正的REST应用程序并不是一项简单的任务。所以, 如果您事先知道您的应用程序仅供客户端使用,可能是 您可以将100%RESTfull方法视为开销。但这并不意味着 您不应该很好地设计应用程序,您仍然可以在应用程序中使用一些REST原则。 例如,无状态应用程序简化了扩展,REST样式的URL看起来很适合用户和搜索引擎等。

2.是的,在真正的REST中,所有交互都应该通过资源上的标准动词来表达。 但您仍然可以创建 Transaction 资源来包装您的事务。 请在此处查看精彩讨论:Transactions in REST?

3.据我所知,没有什么能阻止您在基于HATEOAS的响应中提供元数据信息。

相关问题