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

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

Douglas Lopes 在 Unsplash 上 在过去的几年里,我一直听到 GraphQL——一种用于 API 的查询语言,允许客户端请求特定数据——是 API 的未来。...我将分解这些问题,以便您更好地决定 GraphQL 是否值得在您的集成中使用。我还将重点介绍为什么 REST 今天是更好的选择,并将继续成为领先的 API 标准。...深度嵌套的查询甚至会导致服务器宕机,进一步延迟响应。 此外,GraphQL 通常根据请求的复杂性(例如请求的字段或对象的数量)应用速率限制。...由于这些响应不像 REST 中那样标准化,因此它们更难计划和自动处理。 许多工程师都有构建和/或维护 REST API 集成的经验。 各种规模的公司主要使用 REST API。...在竞争的 API 架构能够超越——甚至匹配——REST 对提供者和消费者双方的实用性之前,REST 将继续成为首选。

1.1K10

在 ASP.NET Core 中实现幂等 REST API

幂等性是 REST API 的一个关键概念,可确保系统的可靠性和一致性。幂等操作可以重复多次,而不会更改初始 API 请求之外的结果。...此属性在分布式系统中尤其重要,因为网络故障或超时可能会导致重复请求。...在 API 中实现幂等性有几个好处: 它可以防止意外的重复操作 它提高了分布式系统的可靠性 它有助于处理网络问题并正常重试 在本周的期刊中,我们将探讨如何在 ASP.NET Core API 中实现幂等性...并发可能很痛苦,尤其是在高流量 API 中。使用分布式锁的线程安全实现效果很好。当同时收到多个请求时,它可以控制事情。但这应该是罕见的。 对于分布式设置,Redis 是我的首选。...这可以防止滥用幂等密钥并保持 API 的完整性。 在 REST API 中实现幂等性可以提高服务的可靠性和一致性。它确保相同的请求产生相同的结果,防止意外的重复并妥善处理网络问题。

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

    如何在 ES 中实现嵌套json对象查询,一次讲明白!

    一、简介 实际的软件项目开发过程中,因为业务上的需要,我们的数据库表与表之间的结构是一对多的关系,以订单表与订单项表为例,在 mysql 数据库里面,他们的关系如下图: 如果我们想查询哪些商品在某个时间段内被购买过...可以看到嵌套文档的方案其实是对普通内部对象方案的补充。我们将上面的订单索引结构中的orderItems数据类型,将其改成nested类型,重新创建索引。...如果一个订单,有1000个订单项,那么在 ES 中存在的文档数就是1001,会随着订单数的增加而成倍上升。 那可想而知,同样的条件下,这个性能肯定不如普通内部对象的方案。...在实际的业务应用中要根据实际情况决定是否选择这种方案。 有一点是可以肯定的是,他能满足内部对象数据精准搜索的要求!...如果业务场景要求搜索必须精准,可以采用嵌套文档的方案来实现,每次更新的时候,文档数据会删除然后再插入,写入和查询性能比嵌套对象要低。

    11.6K50

    2021年11个最佳无代码低代码后端开发利器

    在Airtable基础中建立自动化工作流程是通过使用自定义动作来触发一个事件。最终,该动作整合到了Airtable基地内部。 Airtable还为每个基地生成了一个REST API。...在使用Supabase时,你将在其图形用户界面(GUI)中度过大部分时间。它还提供了一个SQL编辑器,你可以用它来编写自定义的SQL查询,以操作表中的数据。...定价 Spark计划 (免费):Firestore的总存储数据为1GB Blaze计划(随用随付):总容量为1GB,每多存储1GB的数据在Firestore中加0.108美元。...Backendless通过实施REST API使这些服务可用。它提供了对REST API的访问,可以与任何前端工具一起使用。...它使你的数据可以通过GraphQL API或REST API即时访问。这有助于你专注于建立和运送应用程序的速度。 Hasura使用Postgres连接连接到数据库。它可以横向扩展并保持状态以缓存查询。

    16.6K20

    MongoDB聚合索引在实际开发中的应用场景-嵌套文档的聚合查询

    MongoDB 支持嵌套文档,即一个文档中可以包含另一个文档作为其字段。在聚合查询中,可以通过 $unwind 操作将嵌套文档展开,从而进行更灵活的查询和统计。...user_id:用户IDname:用户名orders:订单列表,每个订单包含以下字段:order_id:订单IDorder_date:订单日期total_amount:订单总金额我们可以使用聚合索引和聚合框架来查询每个用户最近的订单信息...首先,我们需要创建一个聚合索引:db.users.createIndex({ "user_id": 1, "orders.order_date": -1 })然后,我们可以使用聚合框架来查询每个用户最近的订单信息...: "$_id", name: 1, order_id: 1, order_date: 1, total_amount: 1 } }])上面的聚合操作将嵌套文档展开后按照用户

    6.1K20

    Vue.js + Node.js + Express + MySQL示例:构建全栈CRUD应用程序

    在这个页面中,你可以: 使用Publish/UnPublished按钮将状态更改成Published/Pending 使用Delete按钮从MySQL数据库中删除对象 使用Update按钮更新数据库中对象的详细信息...Node.js Express导出REST API,并使用Sequelize ORM与MySQL数据库进行交互。 Vue客户端使用axios发送HTTP请求并获取HTTP响应,在组件中使用数据。...在server.js的Express Web服务器中,我们配置CORS,初始化并运行Express REST API。...接下来,我们在models/index.js中添加MySQL数据库的配置,在models/tutorial.model.js中创建Sequelize数据模型。 controller中的教程控制器。...实现 您可以在文章中逐步找到实现此Node.js Express应用程序的步骤: Node.js Rest APIs example with Express, Sequelize & MySQL Vue.js

    28.9K21

    骑上我心爱的小摩托,再挂上AI摄像头,去认识一下全城的垃圾!

    传统的解决方法是将某种形式的传感器分散在城市中,这些传感器将负责收集有关垃圾分布的数据,但是这种方法成本很高,无论是安装还是维护都需要持续的投资,而且对环境不友好,毕竟这种解决环境问题的方法,同时又生产了更多的一次性电子产品...垃圾的GPS坐标通过简单的gpsd接口从usb模块读取,将数据存储在Google Firestore实时数据库中,这样本地的Google firebase SDK就被用于客户端应用程序开发。...Google Firebase则可以让我们将每个GPS点左边作为一个嵌套的集合/文档存储。...Firebase客户端SDK包括一个通用的API,可用于订阅客户端应用程序,以添加/更新/删除 Firestore数据库上运行在VespAI上的应用程序产生的活动。...我们正在考虑使用GeoFire来支持地理查询,这将允许用户对客户定义的区域进行统计。 支持将数据导出到其他类型的数据库。比如支持基于SQL的历史数据集查询。

    14.3K30

    日出日落的气象意义:探索日出日落查询API在天气预测中的应用

    引言当谈论气象意义时,日出和日落都是天文现象中的重要组成部分。它们不仅是自然界美妙的展示,更对天气预测有着深远的影响。而如今,随着科技的发展,日出日落查询API在天气预测中的应用正在变得越来越重要。...这种变化在天气预测中至关重要,因为它帮助气象学家们更好地了解一天中的温度变化规律,进而作出更准确的预测。日出和日落的持续时间也会随着季节的变化而改变,这影响着一天的光照时长。...日出日落查询API在天气预测中的应用日出和日落时间的精确性对于天气预测至关重要。日出日落查询API通过提供日出日落时间数据,为天气预测系统提供了宝贵的信息。...这些API可以帮助气象学家和气象应用开发者更准确地预测日间温度变化、光照时长和天气条件等。对于天气预测应用来说,结合日出日落查询API可以帮助用户更好地规划他们的日常活动。...比如,在预测某天的天气时,用户可以了解到日出时间,以便计划晨间活动。同时,他们也可以根据日落时间,规划户外活动的结束时间,避免天色变暗造成不便或危险。这些API的应用还可以在农业领域发挥巨大作用。

    73350

    API接口架构REST vs GraphQL

    REST 现代应用程序开发中 API 的主要架构是 REST。大多数后端框架可以非常容易地实现 REST。REST API 通常通过 HTTP 方法被调用。...例如,/api/articles 使用 MongoDB 在 Express 应用程序中设置 REST 接口非常简单: app.get('/api/articles', async (req, res)...这可以包括特定字段,甚至在嵌套对象中。我们之前看到必须在模式上定义操作。但是,在这些操作中,我们可以指定我们希望查询返回到模式限制的哪些字段。...请注意,在 GraphQL 响应中接收到的数据将与请求它的查询具有相同的结构。...REST 通过提供多个版本来处理这个问题,这对于 API 开发人员来说是很麻烦的。 使用 GraphQL,可以从模式中删除不推荐使用的字段,而不会影响现有查询。

    2.2K30

    GraphQL与传统API对比介绍教程

    引言在现代应用程序开发中,API(应用程序接口)扮演着至关重要的角色。随着技术的发展,API的实现方式也在不断进化。...优点:灵活性高:客户端可以指定需要的字段和嵌套关系,避免冗余数据。单一端点:所有查询通过一个端点完成,简化了API设计。强类型系统:提供了明确的类型定义和验证,减少了错误发生的可能。...详细对比数据获取方式REST:每个URL代表一个资源,客户端请求一个资源时,服务器返回整个资源对象。GraphQL:客户端可以定义查询,精确获取所需字段,避免冗余数据传输。...性能REST:可能需要多次请求才能获取嵌套资源,增加了网络开销。GraphQL:可以在一次请求中获取所有相关数据,但复杂查询可能增加服务器负担。...在实际开发中,可以根据项目特点和开发需求,灵活使用这两种技术。我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

    72710

    【愚公系列】2022年04月 Python教学课程 74-DRF框架之过滤

    4.3 嵌套查找 4.4 参数说明 4.5 自定义过滤器 一、普通过滤 REST 框架的通用列表视图的默认行为是返回模型管理器的整个查询集。...筛选初始查询集的最后一个示例是根据 url 中的查询参数确定初始查询集。...通用筛选器还可以在可浏览 API 和管理 API 中显示为 HTML 控件。...username', 'email', 'profile__profession'] 4.3 嵌套查找 对于 JSONField 和 HStoreField 字段,您可以使用相同的双下划线表示法根据数据结构中的嵌套值进行查找...如果使用多个搜索词,则仅当所有提供的词都匹配时,才会在列表中返回对象。 搜索行为可能会因在 前面加上各种字符而受到限制。search_fields “^”以搜索开头。 “=”完全匹配。

    3.2K30

    ElasticSearch进阶篇之ElasticSearch-Rest-Client在SpringBoot项目中实战

    1.ES 的Java API两种方式   Elasticsearch 的API 分为 REST Client API(http请求形式)以及 transportClient API两种。...Elasticsearch 集群的一个节点,当然 REST Client API 也支持http keepAlive形式的长连接,只是非内部RPC形式。...transport-api.jar也不同,不能适配es的版本,而且ElasticSearch7.x中已经不推荐使用了,ElasticSearch 8之后更是废弃了,所以我们不做过多的介绍 1.2 9200...JavaAPIClient 7.15版本后推荐 2.ElasticSearch-Rest-Client整合 2.1 创建检索的服务   我们在商城服务中创建一个检索的SpringBoot服务 添加对应的依赖...#java-rest-high-getting-started-maven-maven 公共依赖不要忘了,同时我们在公共依赖中依赖了MyBatisPlus所以我们需要在search服务中排除数据源,不然启动报错

    4.3K10

    一文掌握 GraphQL 查询与突变的语法核心

    它被称为 REST API 的“进阶替代者”,让我们能像点菜一样,按需获取和修改数据。 那么,它到底是怎么做到的?语法难不难?今天我们就用几个直观的例子带你搞懂。 一、GraphQL 是什么?...先来一个通俗理解: REST API 像套餐,服务端定好菜品,你只能全盘接受; GraphQL 像自助餐,你自己选要什么,拿多少。...它的两大优势: 按需获取数据:不多不少,避免了 REST 常见的“数据过载”或“数据不足”。 单次请求多资源:一次查询就能拿到多个相关对象,减少了网络往返。...在 React 这种数据依赖复杂的应用里,GraphQL 就特别受欢迎。 二、GraphQL 查询(Query):怎么“拿数据”? 在 GraphQL 里,读取数据就是用 query。...三、嵌套查询:一次请求搞定复杂数据 REST 里,如果你要仓库信息 + 星标数量,可能要两次请求。

    19210

    使用ASP.NET Core开发GraphQL服务器 -- 预备知识(上)

    GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。...可以把这个类型系统看作是你的API数据的蓝本,它由你定义的一系列对象所支撑。 例如这个User对象: ? GraphQL经常被称作是一个:声明式数据获取语言。...而使用GraphQL,我就可以通过一个查询请求(嵌套的)取得相应的结果。...不灵活:随着API的演进,REST需要随时创建新的端点,所以REST API的端点增长速度很快;此外有版本和兼容性需要谨慎考虑。 而GraphQL,典型的结构是只有一个端点。...综上,使用GraphQL的好处是: 避免多重REST请求 向下兼容,无需考虑版本 可以对现有的数据源(例如REST API)进行包装 与开发语言无关 GraphQL查询 我通过Github的GraphQL

    2.1K40

    flutter架构:Repository设计模式

    在软件开发中,我们可以使用设计模式有效的解决我们软件设计中的常见问题。而在app的架构中,「structural」设计模式可以帮助我们很好的划分应用结构。...❝如果在Widget中直接使用来自REST API 或远程数据库的key-value,这样做是有很大风险的。换句话说:不要将业务逻辑与您的 UI 代码混合,这会使你的代码更难测试、调试和推理。...如果说更具体的话,下面这些场景我认为「Repository设计模式」更合适: 与 REST API 交互 与本地或远程数据库(例如 Sembast、Hive、Firestore 等)交互 与设备的 API...「Repository设计模式在实际中的使用」 我们以OpenWeatherMap(https://openweathermap.org/api)提供的天气查询API为例,做一个简单的天气查询APP。...缺点**:**当我们在IDE点击“跳转到引用”时只能到抽象类中的方法定义而不是具体类中的实现。 缺点:会写更多代码。 4.2只有具体类 优点:更少的代码。

    3.5K30

    以C#一分钟浅谈:GraphQL 数据类型与查询

    引言 随着Web应用的发展,传统的REST API逐渐显现出其局限性,特别是在数据请求的灵活性和效率方面。...它提供了一种更有效和强大的方式来获取数据,与传统的REST API相比,GraphQL允许客户端精确地请求所需的数据,而不需要额外的字段或嵌套资源。...C#中的GraphQL实现 在C#中,最常用的GraphQL库是GraphQL.NET。这个库提供了丰富的功能,可以帮助开发者快速构建GraphQL API。...查询深度限制 在GraphQL中,客户端可以自由地嵌套查询,这可能导致查询深度过深,影响性能。为了避免这种情况,可以在Schema中设置查询深度限制。...权限控制 在实际应用中,不同的用户可能具有不同的权限,需要对查询进行权限控制。可以在字段解析方法中添加权限验证逻辑。

    41010
    领券