热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

管理多个graphql_使用GraphQL的6个月

管理多个graphql在后端使用GraphQL进行了6个月的项目研究后,我权衡了该技术在开发工作流程中的适用性本文绝不是GraphQL与REST的比较。有很多文章都提

管理多个graphql

在后端使用GraphQL进行了6个月的项目研究后,我权衡了该技术在开发工作流程中的适用性

本文绝不是GraphQL与REST的比较。 有很多文章都提供了非常详细的信息。 我将分享我使用该框架的经验以及它如何影响我们的开发速度和团队之间的协作。

首要的

GraphQL是API的查询语言,是用于使用现有数据来完成这些查询的运行时。 GraphQL为您的API中的数据提供了完整且易于理解的描述,并且使客户有权要求他们确切需要什么,仅此而已。

它是由Facebook开发的,作为其移动应用程序的内部解决方案,后来被开源给社区。 从那时起,它就在开发人员中广泛流行,并已成为构建服务的最喜欢的解决方案。

它如何适合?

1.实用数据交换

使用GraphQL,可以为客户需要的字段定义查询,仅此而已。 真的就是这么简单。 如果前端需要一个名字和一个年龄 ,它只能要求这一点。 最后一个名称和该地址将不会在响应中发送。

2.使用数据加载器减少网络呼叫

尽管数据加载器本身不是GraphQL库的一部分,但它是一个实用程序库,可用于解耦应用程序中不相关的部分,而不会影响批处理数据加载的性能。 加载程序提供了一个加载各个值的API时,所有并发请求将被合并并呈现给您的批量加载功能。 这使您的应用程序可以安全地在整个应用程序中分发数据提取。

这方面的一个例子是由称为交易业务的不同服务获取的人的银行信息 , 后端可以获取从交易服务银行详细信息 ,然后该结果结合了名字年龄和发送资源返还。

3.忘记API的版本控制

API的版本控制是一个常见问题,通常,通过在其前面添加v2来添加相同API的新版本来解决它相当简单。 使用GraphQL的情况有所不同,您可以在此处拥有相同的解决方案,但是这与GraphQL的精神并不合适。 该文档明确指出您应该改进API,这意味着向现有端点添加更多字段不会破坏您的API。 前端仍然可以使用相同的API进行查询,并且可以在需要时请求新字段。 很简单

与前端团队合作时,此特定功能非常有用。 他们可以请求添加由于设计更改而需要的新字段,并且后端可以轻松添加该字段而不会弄乱现有的API。

4.独立团队

使用GraphQL,前端团队和后端团队可以独立工作。 使用GraphQL具有的严格类型化架构,团队可以并行工作。 首先, 前端团队可以轻松地从后端生成模式,而无需查看代码。

生成的架构可以直接用于创建查询。 其次, 前端 团队可以继续使用该API的模拟版本。 他们还可以使用它来测试代码。 这为开发人员提供了愉快的体验,而不会停止他们的开发工作。

并非适合所有人

1.并非所有的API都能进化

有时候,从业务或设计中进行细化可能会带来一些变化,这将需要对API的实现进行彻底的更改。 在这种情况下,您将不得不依靠旧的方式进行版本控制。

2.不可读的代码

就像现在经历了很多次一样,使用Dataloader读取数据时,有时代码有时会分散到多个位置,从而可能难以维护。

3.响应时间更长

由于查询可以发展并变得庞大,因此有时可能会浪费响应时间。 为避免这种情况,请确保简明扼要的响应资源。 有关指导原则,请查看Github GraphQL API。

4.缓存

缓存API响应的目的主要是为了更快地从将来的请求中获取响应。 与GraphQL不同,HTTP规范内置了RESTful API可以利用的缓存。 正如前面提到的,GraphQL查询可以请求资源的任何字段,因此缓存本质上是困难的。

翻译自: https://hackernoon.com/6-months-of-using-graphql-dq2o3yyl

管理多个graphql



推荐阅读
  • 如果要进行复杂的数据检索,发送大量数据但不更改服务器状态怎么办?现在,您有两个主要选择:使用GET,然后将所需的所有参数压缩到URL或标头中使用POST,并将请求视为不安全且不 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文探讨了 RESTful API 和传统接口之间的关键差异,解释了为什么 RESTful API 在设计和实现上具有独特的优势。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • ServiceStack与Swagger的无缝集成指南
    本文详细介绍了如何在ServiceStack项目中集成Swagger,以实现API文档的自动生成和在线测试。通过本指南,您将了解从配置到部署的完整流程,并掌握如何优化API接口的开发和维护。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 通过与阿里云的合作,牛客网成功解决了跨国视频面试中的网络卡顿问题,为求职者和面试官提供了更加流畅的沟通体验。 ... [详细]
author-avatar
Jes潔絲琳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有