说点题外话04|面向对象的原则适用于RESTful API吗?
徐昊
该思维导图由 AI 生成,仅供参考
你好,我是徐昊。今天我们再来专门说点题外话。
前面几期题外话都比较偏向于提供一种不同的角度,主要是因为你们也并没有针对课程的内容,提出什么特别的问题需要我来具体回答。那么作为我们在进入新约前的最后一篇题外话,我想聊一聊关于 RESTful API 的问题。
我记得有位同学在留言区问了这样一个问题:过长的 URI 是否破坏了迪米特法则(Law of Demeter)。这里我们就要搞清楚,什么是迪米特法则呢?
迪米特法则又叫最小可知法则,指的是在面向对象设计中,实体应尽可能少地与其他实体发生交互。为了说明什么是“少的交互”,我们还特别归纳了一组可以认为不违反迪米特法则,并且可以直接调用的对象:
当前对象自己(this,self);
以参数形式传入的对象,比如函数的形参(parameter);
当前对象内实例变量引用的对象(instance variable);
如果实例变量是集合,那么集合中的对象也可以访问(collection,aggregration);
由当前对象创建的对象(variable declaration in function)。
那么这些场景适用于 RESTful API 调用的场景吗?显然并不太适用。因为在 RESTful API 的场景中,实体只有客户端和 API 提供者,而 API 提供者的内在结构都被 API 层屏蔽了。所以无论怎么调用,都不会出现对于 API 提供者内部结构的依赖。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
徐八叉在文章中探讨了面向对象的原则在RESTful API中的适用性。他首先解释了迪米特法则,并指出在RESTful API的场景中,实体只有客户端和API提供者,而API提供者的内在结构都被API层屏蔽了。因此,迪米特法则在这种情况下并不太适用。然后,他提出通过超媒体明确地表示资源之间的关联,以及按照HTTP语义约定设计API,可以帮助遵循迪米特法则。此外,他讨论了HATEOAS的作用,指出RESTful API的核心是开放性和扩展性,与企业应用的客户端与服务器架构有所不同。最后,徐八叉强调了RESTful API、MicroService、企业内生态等在企业架构现代化中的重要性。文章提供了对RESTful架构下面向对象原则与最佳实践的思考,引发了对这一话题的深入思考和讨论。 在RESTful架构下,面向对象原则与最佳实践体现在对迪米特法则的重新思考,以及通过超媒体和HTTP语义约定设计API来降低客户端对API提供者的知识依赖。此外,RESTful API的核心开放性和扩展性与传统企业应用的架构有所不同,这也是面向对象原则在RESTful架构下的体现之一。这些观点为读者提供了对RESTful API设计的新思路和理念,对于理解和应用RESTful架构具有重要的指导意义。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《如何落地业务建模》,新⼈⾸单¥68
《如何落地业务建模》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(6)
- 最新
- 精选
- 邹溪源接口无处不在,而良好的设计则更显得非常重要。基于restful的架构风格设计接口,相比传统的http风格设计的接口,更易于引入面向对象的程序设计。这种设计也成为实践单一职责原则的练兵场。 而有了接口,也使得依赖倒置成为一种基本操作。
作者回复: 面向对象不面向对象单说 比较容易得到稳定的api
2021-07-272 - 阿鸡想请问下SOA能使用面向对象的原则吗? 还是只能在服务内部面向对象,在服务边界还是传统的DO加XxService的形态
作者回复: 跨进程边界无法用面向对象
2021-08-011 - 海连天老师怎么看GraphQL2022-03-032
- 老敖“比如通过超媒体明确地表示资源之间的关联,而不是依靠客户端去拼凑 URI。如果客户端可以拼凑出 URI,则表明客户端对于 API 提供者的内在逻辑存在依赖。而通过 HATEOAS,把所有关联的链接直接提供,就避免了暴露内在的逻辑。”这段话多少有点耍流氓了,按这个逻辑,不穿衣服上街就没人能强奸我了?2022-12-09归属地:北京
- aoe原来 RESTful 还有一个 HATEOAS2022-04-09
- 许凯功能和配置一致、单一、完整、正交2021-11-01
收起评论