毕业论文
您现在的位置: 版本控制 >> 版本控制资源 >> 正文 >> 正文

用了6个月的GraphQL,真香

来源:版本控制 时间:2022/7/25
白癜风可以吃什么 http://baidianfeng.39.net/a_cjzz/210110/8578059.html
做家

ManishJain  筹划

万佳  本文做家用GraphQL在后端做了6个月的项目,分享了本人领会GraphQL的好处和瑕玷。做家觉得GraphQL供给的机动性让其瑕玷不够为道,激烈提倡利用GraphQL做为RESTAPI的取代品。  

GraphQL是一种用于API的盘诘谈话,同时基于你的现罕见据来实行这些盘诘的效劳端运转时。它为API中的数据供给了一套易于明白的完好刻画,并让客户端能的确地赢得它们所需的盘诘实质,且不会附带任何冗余讯息。

最后,GraphQL可是Facebook为其挪移APP开采的内部束缚计划,后来向社区开源。

1好处  适用的数据交流  

利用GraphQL时,开采者也许凭借客户端需求的字段对盘诘举行机动界说,这类“量文体衣式”的自界说特别适用,况且实行起来极端简朴。假如前端需求一单方的“名字”和“春秋”,GraphQL就可以只对这两个字段举行盘诘。而这单方的“姓”和“地方”就不会在该盘诘的反应中被发送。

利用数据加载器来削减网络移用  

即使GraphQL库自身并不包罗数据加载器(Dataloader),然而数据加载器确实是一个特别适用的程序库,也许用来解耦你的APP中互不关连的部份,还不会捐躯批责罚数据加载的功能。即使数据加载器供给了一个加载单个值的API,但悉数并发要求将被组合起来并提交给你的批责罚加载函数。这就可以让你的APP在周全运用程序中平安地实行散布式数据猎取。

举个例子:在上述例子的基本上,此次咱们从另一个叫做“交流衣务”的效劳中猎取一个“人”的“银行讯息”,这时后端也许从“交流衣务”中猎取关连的“银行讯息”,而后将这个了局与这个“人”的“名字”和“春秋”系缚在一同,再将这些讯息资本做为反应发送归去。

在公布数据和数据库模子之间举行解耦  

GraphQL的一大好处是能以解耦的方法将数据库建模数据对用户举行筛选性地公布。如许,在对长远层(persistencelayer)举行打算时,咱们也许在聚焦于该层需求的同时,统筹琢磨何如才是向外部寰宇公布数据的最好方法。该成效还能与数据加载器结合起来利用,由于你也许在将数据发送给用户前将这些数据组合在一同,如许一来为公布数据打算模子就会变得特别简朴。

挣脱API版本掌握的懊恼  

API版本掌握是一个屡次碰到的题目。通常而言,经过在不异的API前方增加一个v2标签来增加一个新版本去束缚这个题目,这是相当简朴的束缚计划。但利用GraphQL时,状况就大不不异了,即使你仍是也许利用上述束缚计划来责罚这个题目,但这并不吻合GraphQL的自在精力。GraphQL文档精确指出,你应当晋级你的API,这象征着在不毁坏原API的状况下向现有端点增加更多字段。前端仍旧也许利用不异的API举行盘诘,况且在需求时要求新字段。便是这么简朴。

这个特点在与前端开采团队配合时特别适用。由于打算变更,前端团队也许要求增加所需求的新字段,尔后端团队能轻便地完成该字段的增加,且不会扰乱现有API。

先后端团队自力开采  

利用GraphQL,前端和后端团队能互相自力地办事。由于GraphQL包罗严酷类别界说的schema,先后端团队也许互不做对地并行办事。

首先,前端团队以至在无需观察代码的状况下,就可以很简朴地从后端生成schema。而这个生成的schema也许直接用于盘诘的创立。

其次,前端团队还也许向来利用API的mock版本举行开采办事。他们还能用mock版原本测试代码。这为开采人员供给了相适时人喜悦的领会,且全面不会对他们的开采办事形成任何妨碍。

2瑕玷  并不是悉数的API均也许晋级  

偶尔,由于来自生意或打算的改变积少成多,迫使API的完成需求全面变更。在这类状况下,你将不得不依赖旧的办法来举行API版本掌握。

难保护的代码  

我碰到过好屡屡,在利用数据加载器猎取数据时,代码偶尔会分开到多个处所,这对代码的保护带来一些痛苦。

响适功夫长  

由于盘诘也许陆续晋级并变得特别硕大,这偶尔会影响盘诘的响适功夫。要防止这类状况,请保证让反应资本维持简明。这方面的指南,请观察GithubGraphQLAPI。

转载请注明:http://www.0431gb208.com/sjslczl/1089.html

  • 上一篇文章:
  • 下一篇文章: 没有了