REST仅适用于具有人机交互的应用程序吗?

时间:2015-05-26 23:55:11

标签: rest architecture restful-architecture hateoas

我很擅长使用RESTful架构构建应用程序。事实上,到目前为止我所做的一切都被Leonard Richardson归类为Level 2 REST,我知道Fielding会happily categorize为非RESTful。

我花了好几个小时试图了解HATEOAS以及如何达到4级。现在我看得更清楚了。我将应用程序概念化为一系列状态转换,资源将动态提供有关如何从一种状态移动到另一种状态的信息的链接。

但是与HATEOAS相关的一切似乎都是人机交互所固有的。我的意思是,即使资源提供了使应用程序用户能够移动到下一个状态的链接,最终用户也可以通过使用提供的链接将应用程序从一个状态驱动到另一个状态。 / p>

但是当我们处理计算机到计算机的交互时,事情应该如何运作?毕竟,在服务导向方面,服务构成的概念是关键,我们不能天真地认为客户总是会成为一个人?许多服务旨在供非人类用户使用,而某些交互/编排可能相当复杂,通常使用BPM或BPEL等模型进行建模。

REST和特别是HATEOAS是否仅适用于暗示人为干预的应用程序,如果不是,这应该如何起作用呢?

我感受到这样的氛围:REST只对某些类型的解决方案有益,而对其他解决方案不适用,但是那里的文献未能解释这些不足之处并将REST作为万物的治疗方法出售,但我只是不太了解当人类不是司机时,如何使用适当的服务组合。

我真的很感激任何有关这方面的参考或见解,因为相信我,我已经连续两天阅读了我在这个主题上能够找到的所有内容,而且我还没有能够得出任何合理且有据可查的结论。

2 个答案:

答案 0 :(得分:1)

好吧,您的客户端应用可以解析响应以获取可能的操作。在这种情况下,实际的URL不是从API的知识中获得的,而是在调用初始方法(通常是GET)时获得的。全人类。

答案 1 :(得分:1)

听起来好像您正在将SOA与REST /超媒体进行比较,并且未能看到SOA是一种策略,用于设计由其他系统构成的复杂系统,而REST / Hypermedia是一种软件架构风格应用客户端 - 服务器通信上的一堆约束。然而,客户既可以是服务器,也可以是人,无关紧要。

在概述/设计服务组合时,使用或不使用REST /超媒体并不需要考虑。这是在尝试实现语法互操作性时发挥作用的问题。很多时候,它归结为将REST与Soap和其他技术细节进行比较。