过去几年,有很多关于REST的炒作,我试图接受这个原则并理解它的好处。但是,关于REST的一些事情仍然无法实现。我会尽量简明扼要地说:
我可以提出更多问题,但如果有人能为我澄清这些问题,那就足够了。
答案 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的响应中提供元数据信息。