为什么RESTful很糟糕?
发布日期:2021-05-14 01:59:07 浏览次数:21 分类:精选文章

本文共 1056 字,大约阅读时间需要 3 分钟。

罗伊看着桌上的咖啡杯,重新梳理着问题。他总是习惯性地相信自己设计的RESTful架构能够轻松应对各种需求,但此刻却暴露出了两个明显的短板。

第一个问题尤为棘手:大量的文章数据查询导致了效率低下。为了获取每篇文章的作者头像,系统不得不对每一个文章实体执行额外的查询,这在数据量较大时表现出明显的性能瓶颈。这种逐个查询的方式不仅增加了系统负担,也让数据处理变得臃肿难以维护。

第二个问题更为令人头疼:返回结果中包含了大量冗余字段。虽然用户只需求到作者的头像URL,但系统却将一 출장常的用户数据全部返回,这种设计显然违背了"尽量减少传输数据量"的RESTful理念。

"也许我们需要引入一个中间层来解耦前端需求和后端业务逻辑。"罗伊喃喃自语。他想起以前在传统JSP开发中,程序员常常会通过自定义的View对象实现视图逻辑的分离。为什么不在RESTful架构中也做一个类似的策略呢?

想到这里,他转头问向正在低头操作手机的人:"格拉夫,你觉得最好是创建一个新的资源,专门用来组合文章和作者信息吗?"

格拉夫抬起头,露出一丝怀疑的神情:"这会把资源设计和视图逻辑绑定得更紧密。如果界面需求变动,这个资源也得随之改变,这就增加了运维的成本。"

"不然的话,我们可以选择做个版本管理。"罗伊打了个比方,"老版本保持原有的接口,新版本增加扩展字段。当新手机端版本推出时,自动切换到新的资源接口。这也许是一个解决方案。"

产品经理看了他一眼:"这也行,但如果有一天需要在一个版本中同时支持旧和新接口,这就变得相当麻烦了。"

没人提到第三个解决方案,而罗伊心里也明白这条路走不通。于是他转而思考,或许需要一个更灵活的查询方式,能够在保持API简洁性的同时,实现特定场景下的数据组合需求。

"格拉夫,你觉得能否让手机端自行发起诸如JOIN这样的查询?"他崩溃地想出了一个大胆的想法。

"图数据库?"格拉夫的眼睛突然异样 overlook的神态。

"没错。"他解释道,"如果我们把数据建模为一个图,每个实体之间都有明确的关系。然后在图查询语言下,你可以方便地同时获取文章与作者的关联信息。比如,你可以找出所有涉及作者John的文章,同时追踪他们的朋友。"

这听起来颇具魅力。格拉夫看着他,似乎有所触动:"也许你可以再具体说明一下这个查询语言的概念。你是打算自己研发这样的查询语言吗?"

"看来这小子真的有才华。"旁边的技术主管打趣道。

罗伊见机,直接切入主题:"这个查询语言叫什么名字?既然是基于图的查询,那么就叫做GraphQL!"

上一篇:千万别用设计模式?
下一篇:上了公众号的“贼船”, 后悔吗?

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月25日 13时22分24秒