首页
学习
活动
专区
圈层
工具
发布

为什么我使用 GraphQL 而放弃 REST API?

虽然我们很幸运,不必再关心 SOAP,但 REST 也不是历史的终结。 最近,我有机会为自己的项目和客户开发和运行一些使用 GraphQL API 构建的移动和 Web 应用程序。...至此,我再也无法回过头来享受使用 REST 的工作了。 REST 有什么问题吗? 每个 REST API 都是独特的 公平地说,REST 甚至不是一个标准。...参见 GitHub REST API(至少不是在头中传递 JSON)。 说到过滤,就有趣多了……需要按一个字段过滤吗?没问题,可能是/todos?...要了解这些工具是如何工作的,请查看 Star Wars API 示例,它可以作为 GraphiQL 的在线演示。 能指定从服务器请求的对象字段让客户端可以根据需要只获取需要的数据。...它已经出技术预览四年多了,而且这个生态系统正在变得更加强大。

3.3K30

REST 已死:为什么你的 .NET API 应该迁移到 GraphQL

基础理解 GraphQL 是一种 API 查询语言,允许客户端按需获取数据。与 REST(服务器决定每个端点返回的数据)不同,GraphQL 让客户端精确指定所需数据。...订阅(Subscriptions):实时更新 • 与服务器保持活动连接 • 数据变更时接收更新 • 适用于聊天应用、实时动态等 REST 与 GraphQL 对比 REST 方式(需多个端点) GET.../api/users/ GET /api/users//orders GET /api/users//preferences 需发起三次独立请求,且无论是否需要都会获取所有字段。...这与 REST 有本质区别——在 REST 中,每个端点通常映射到单个控制器操作;而在 GraphQL 中,可能需要数十个解析器协同工作以满足单个查询。...简单 CRUD 应用 如果只是构建基础管理面板,REST 可能更简单。 2. 文件上传 GraphQL 虽支持,但比 REST 复杂。 3. 小团队且工期紧张 学习曲线可能对小型项目不划算。

58600
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    微服务构建持久API的7大规则

    七大原则 一、Restful是最好的,但要实用,不需要学究式 首先,也是最重要的一步,我们采取的步骤是决定使用REST作为API。我们的理念是选择以下三个要素作为我们的API的基础:。 1. ...· 请求主体中的非预期查询参数和JSON字段应该被忽略。 治理组还为如何进行更改以及允许哪些类型的更改设置了基本规则。...有一些很好的API更改对用户是有益的,并且不会破坏它们的集成,包括: · 一个新的API资源、端点或现有资源上的操作。 · 一个新的可选参数或JSON字段。 · 在JSON响应主体中返回的新字段。...· 我们发了一封邮件或发表了一篇博客文章,里面包含了关于改变的详细信息以及我们为什么要做这些改变。 · 我们在API文档中提供了升级指导。...我们很早就决定不将API的版本超过第一个版本,因为这样做会增加不必要的复杂性,从而减慢用户对我们最新和最强大功能的使用。对API的版本控制也会减缓开发和测试,让监控变得复杂,让用户文档变得混乱。

    1K00

    gRPC 知多少

    Transfer, REST ) 作为事实上的通信技术。     ...基于大多数的业务场景实现,我们可以看到在 HTTP 上使用 REST API 作为同步模式的身影,然而,随着业务架构的不断演进,此种策略并不是最优的解决方案。...针对 RPC ,可认为其是一种比 REST 更古老的协议,基于 API 的现代应用程序中以不同的方式用于实施部署。其 API 是通过定义公共方法来构建的,然后采用参数调用的方法。...RPC只是一堆函数,但是在 HTTP API 上下文中,它需要将方法放到 URL 中,并将参数放到查询字符串或主体中。...RPC API 使用类似于 POST /deleteResource 的方法,它的主体是{“id”:1},而不是 REST 方法,后者是DELETE /resource/1。

    1.6K70

    架构师该如何为应用选择合适的API

    如果你的应用是由不同语言编写的,那么这里只能选择Socket通信作为应用之间的API手段。但是Socket通信是一种非常低Level的通信手段,它以底层的数据包作为抽象和通信内容,很难维护和使用。...3.REST REST是当今最为流行的API。因为大量的Web应用采用REST作为其API的选择。REST是 Representational State Transfer 的缩写。...所以我们可以看到软件的发展,大体是从复杂变得简单,只有简单的东西才会变得更有生命力。...按需代码:客户端必须能够获取可执行代码作为响应。这是一个可选约束。 基于REST的Web服务被称为RESTful Web服务。...达到GraphQL端点后,客户端请求的负担将完全在请求主体内处理。该请求主体必须遵守GraphQL规范,并且API必须具有适当的服务器端逻辑来处理这些请求并提供适当的响应。

    2.2K20

    我所理解的RESTful Web API

    构建REST风格的Web服务是最近两三年风行的潮流,所以很多人以为REST是一个事物。而事实却是:REST自其诞生之日起到现在(2014年)已经有14年了,它为什么叫这么一个“奇怪”的名字呢?...目录 一、为什么叫这个“奇怪”的名字?...REST是“REpresentational State Transfer”的缩写,可以翻译成“表现状态转换”,但是在绝大多数场合中我们只说REST或者RESTful。为什么会起这么一个奇怪的名字呢?...一个资源必须具有一个或者多个标识,既然我们设计的Web API,那么很自然地应该采用URI来作为资源的标识。...我们甚至可以直接使用HTTP方法名作为Web API接口的方法名称,那么这样的Web API接口就具有类似于如下的定义。

    1.3K70

    REST API 设计最佳实践:如何构建、设计和使用 API ?

    作为一名开发者,我很幸运能够在工作中使用一些仍然存在的SOAP服务。但是,我主要接触的是REST,这是一种基于资源的API和Web服务开发架构风格。...不要返回纯文本 尽管并非强制规定的,但大多数REST API通常约定使用JSON作为数据格式。然而,仅返回包含JSON格式字符串的响应体是不够好的。您还应该指定Content-Type标头。...在响应体中返回错误详情 当API服务器处理错误时,将错误详细信息包含在JSON主体中可以帮助使用者进行调试,这是是非常方便的,如果您还能说明哪些字段受到了错误的影响,那就更好了!...使用专门针对REST API的网络框架 作为最后一个最佳实践,让我们讨论这个问题:如何在您的API中实际应用最佳实践?大多数时候,您希望建立一个快速的API,以便一些服务可以相互交互。...我强烈建议您试一试这些框架,它们将帮助您构建美观、优雅且设计精良的REST API。 结束语 我们都应该努力使API变得易于使用。无论是对于消费者,还是我们自己的开发人员同伴。

    2.2K40

    FIMS:互操作型媒体服务架构

    为什么媒体行业需要一种新的系统架构 1.媒体消费者的改变 电子媒体行业如今正面临着诸多挑战。内容消费者的需求变得更加复杂,无论是对可用内容的期望,还是他们消费内容的方式。...对于REST实现,消息应符合规范为每个服务定义的头和主体REST映射,消息有效负载应使用FIMS模式进行验证。 5)在SOAP实现的情况下,每个服务至少应实现FIMS WSDL定义的强制部分。...MCMA的目标是开发一组具有最小有效负载的简化REST API,以允许集成工作流,将云中的微服务与其他内部服务和流程相结合。 MCMA还将在高级API和底层(例如云)平台之间共享包含粘合代码的库。...所有库和组件都可以作为GitHub FIMS存储库上托管的项目使用。 MCMA REST调用代表了任何现有云平台(或其他)的最高抽象级别。特定于每个平台的库构成REST接口和工具之间的API层。...作为FIMS项目的参与者,可以设置适合其业务和可用资源的参与级别。

    1.4K10

    为什么GraphQL是API的未来

    先让我们研究一下 REST 存在的问题,以及 GraphQL 如何解决它们。我们还将了解那些大公司为什么用 GraphQL 去构建API,以及为什么它是 API 的未来。...但是随着应用和 Web 变得越来越复杂,API 也会随着这些变化而发展。 不过 REST 也确实存在很多问题。让我们看看它们是什么: 太多的端点 REST 中的每个资源都由端点表示。...随着时间的推移,开发会变得越来越困难,代码也难以维护,程序员会感到迷茫。 版本控制 在我看来,REST 中的一个痛点就是版本控制。...GraphQL 使得开发 API 变得容易并保持一致 很多人认为 GraphQL 非常复杂,因为它涉及模式和单个端点。但是你一旦开始用它开发 API,会发现它比你想象的要容易得多。...当你开发网站或应用时,“单端点” API 会给你很大帮助。它使你的 API 更加能够自我描述,并且无需为它编写大量的文档。 如果你并不是把 JavaScript 作为主要语言,那也不是问题。

    2K30

    REST在许多API使用场景中仍然优于GraphQL

    我还将重点介绍为什么 REST 今天是更好的选择,并将继续成为领先的 API 标准。 GraphQL 的缺点 我可以指出使用 GraphQL 的几个基本问题。...随着时间的推移,随着您在请求中增加资源,理解和遵循您的速率限制将变得更加复杂。 最后,随着 API 的成熟,其 GraphQL 模式变得更加复杂。...为什么 REST 更好并且将继续存在 以下是一些 REST 是集成 SaaS 应用程序的最佳选择的原因。 REST API 附带标准化的错误代码。...这些代码——包括从 404(未找到)到 500(内部服务器错误)的所有内容——使诊断问题和构建自动解决问题的错误处理流程变得容易。...由于这些响应不像 REST 中那样标准化,因此它们更难计划和自动处理。 许多工程师都有构建和/或维护 REST API 集成的经验。 各种规模的公司主要使用 REST API。

    1.2K10

    【API架构】REST API 设计的原则和最佳实践

    这是一个完整的图表,可以轻松理解 REST API 的原理、方法和最佳实践。 现在,让我们从每个盒子的原理开始详细说明它。...REST 定义了四个接口约束:资源的识别、通过表示的资源操作、自描述消息和作为应用程序状态引擎的超媒体。 自描述消息:每条消息都包含足够的信息来描述如何处理消息。...最佳实践 现在,让我们换个角度来了解 REST 的基本最佳实践,这是每个工程师都应该知道的。 保持简单和细粒度:创建模拟系统底层应用程序域或系统数据库架构的 API。...当链接在响应中返回时,API 变得更具自我描述性。对于支持分页的响应中返回的集合,“first”、“last”、“next”和“prev”链接至少是有益的。...问这个问题,“这个主体对给定资源是否有请求的权限?”

    2.1K10

    Salesforce Integration 概览(五) Remote Call-In(远程操作 外部->salesforce)

    •REST API与SOAP API-REST将资源(实体/对象)公开为URI,并使用HTTP谓词定义对这些资源的CRUD操作。...使用restapi复合资源在一个API调用中进行一系列更新。 •REST复合资源使用这些REST API资源在单个API调用中执行多个操作。也可以使用一个调用的输出作为下一个调用的输入。...请求的所有响应主体和HTTP状态都在单个响应主体中返回。整个请求都算作一个符合API限制的调用。...Apex web services Suboptimal Apex类方法可以作为web服务方法公开给外部应用程序。此方法是SOAP API的替代方法,通常仅在必须满足以下附加要求的情况下使用。...尽管SOAP-API也可以用于处理大量记录,但当数据集包含数十万到数百万条记录时,它就变得不太实用了。这是由于其相对较高的开销和较低的性能特点。

    3.9K20

    Github 火热的 FastAPI 库,站在了这些知名库的肩膀上

    Django REST Framework Django REST Framework 是一个非常灵活的框架,用于构建 Web API,以改善 Django 的 API 功能。...Django REST Framework 是第一个自动生成 API 文档的框架,自动生成 API 的接口文档是 FastAPI 框架诞生的缘由之一。...Requests 是一个与API(作为客户端)进行交互的库,而 FastAPI 是一个用于构建 API(作为服务器)的库。它们或多或少地处于相反的末端,彼此互补。...Swagger / OpenAPI 我想要 Django REST Framework 的主要功能是自动 API 文档。...这就是为什么在谈论版本 2.0 时通常会说“ Swagger”,对于版本3+来说是“ OpenAPI”。 启发 FastAPI 地方: 为API规范采用开放标准,而不是使用自定义架构。

    6.3K30

    ⚡REST 和 SOAP 协议有什么区别?

    ## REST 和 SOAP 的异同REST 和 SOAP 之间的共同点是什么,为什么它们经常被拿来比较?...* REST 作为一种架构风格,对 Web API 的设计有一定的限制。REST 标准要求被视为 “RESTful ”的 Web API 必须遵守 REST 约束。...与 SOAP 不同,REST 并不规定如何处理 API 信息由于 SOAP 只是一种 Web API 协议,因此 REST API 可以使用 SOAP 协议作为数据传输的标准。...REST 的目标是轻量级、与浏览器高度兼容、将客户端与服务器分离并提供缓存功能。那么,如果 REST 出现在 SOAP 之后,并且 REST 解决了 SOAP 的问题,为什么 SOAP 还存在呢?...* **Header(请求头):** 可选的部分,用于存储授权属性,如 API 密钥等。* **Body(主体):** 必需的部分,用于指定在提交请求后期望从 API 接收哪些信息返回。

    1.7K00

    关于 REST API,你了解多少?

    在开发阶段,API 开发人员可以通过多种方式实现 REST。符合REST架构风格的Web API(或Web Service)称为 REST API(或RESTful API)。...这种方式在 REST 中并不是必须的,但是它可以提高系统的灵活性和可扩展性。 为什么需要 REST API REST API是在Web应用程序的发展过程中产生的。...在这种情况下,Roy Fielding在2000年提出了REST(Representational State Transfer)的概念,作为一种新的Web应用程序架构风格。...REST使用HTTP协议作为通信协议,使用URI(Uniform Resource Identifier)来标识资源,使用HTTP请求方法(如GET、POST、PUT、DELETE等)来操作资源,并使用...所有这些原则都有助于 RESTful 应用程序变得简单、轻量级和快速。

    63010

    Go中的机器学习与Python Sidecar

    对于像 ChatGPT、Gemini 或 Claude 这样的顶级商业大型语言模型 (LLM),这些模型都以与语言无关的 REST API 的形式提供。...此外,还有许多优秀的开源工具,可以让我们在本地运行此类模型,并公开 REST API,以提供与 OpenAI 或 Gemini API 非常相似的体验,包括专用的客户端库。...与 Ollama 一样,它也为模型提供了 REST API。...如果这种定制的 LLM 适用于您的项目,请考虑直接运行 Ollama 或 Llamafile,并使用它们的 REST API 与模型进行通信。如果您需要更高程度的定制,请继续阅读。...在当今的容器和编排世界中,这种方法正变得越来越普遍;这就是为什么许多关于 sidecar 的链接都指向 k8s 和其他容器化解决方案。

    42910
    领券