得墨忒耳定律(确实应该是德米特的建议)说你不应该"穿过"一个物体来获取它们的子物体.如果您作为客户端需要执行一些非平凡的操作,那么大多数情况下您正在使用的域模型应该支持该操作.
REST原则上是一个愚蠢的对象层次结构.它就像资源/对象的文件系统,其中每个对象都可以有子对象.您几乎总能通过REST实现目标.您可以选择使用REST技术构建按惯例复合对象类型,只要提供者和客户端就更高级别的操作达成一致,您就可以避免覆盖范围.
那么,你如何平衡REST和Demeter?在我看来,它们并没有发生冲突,因为REST完全是关于超松散耦合的,因为提供商试图预测客户端的所有需求是没有意义的,而Demeter认为逻辑可以迁移到它的通过重构最自然的地方.
但是,您可以认为REST只是一个止损,直到您更好地了解您的客户.REST只是一个黑客?Demeter在任何服务器/客户端场景中都不现实吗?
Demeter在任何服务器/客户端场景中都不现实吗?
我想你在这里回答了你自己的问题.如何REST
以这种方式不同于SOAP
或XML-RPC
在这方面?
重点REST
不是提供超松耦合,而是以下内容:
提供准确描述所请求资源的标识符.
提供行为符合预期GET
请求的服务是幂等的,PUT
更新记录,POST
创建,DELETE
删除
最小化存储在服务器上的状态
撕下不必要的复杂性
有些情况REST
并不是最好的答案,但REST
总的来说效果非常好.