首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么使用 GraphQL 而放弃 REST API

最近,我有机会为自己的项目客户开发运行一些使用 GraphQL API 构建的移动 Web 应用程序。这真是一个很好的体验,尤其要感谢令人惊叹的 PostGraphile Apollo。...至此,我再也无法回过头来享受使用 REST 的工作了。 REST 有什么问题吗? 每个 REST API 都是独特的 公平地说,REST 甚至不是一个标准。...你需要同时在服务器客户端上实现每个端点 还有大量的库可以在 ORM 或直接数据库自省的帮助下自动生成 REST 端点。即使使用了这样的库,它们通常也不是很灵活或可扩展的。...对于所有讨论过的问题,我倾向于认为,在 CRUD 应用程序中,有一种标准方式来生成使用 API 会非常棒。通用的工具模式、集成测试和文档基础设施将有助于解决技术组织问题。...不再有多个重量级的查询发送到一个刚性的 REST API,为了让客户端可以在应用程序 UI 中一次性显示它。你不再受限于一组端点,而是有一个可以查询修改的模式,能够挑选客户端指定的字段对象。

2.3K30

基于场景选择微服务的API范式:REST、GraphQL、WebhooksgRPC

为了帮助API开发者了解使用哪种API设计风格以及在什么情况下使用,我们把REST与其他三种选择放在一起进行了一个说明,即:gRPC, GraphQLWebhooks。...总之,REST是现代微服务API领域非常高效、有效强大的解决方案。 二、REST案例:PayPal REST API的一个示例应用是PayPal REST API。...RPC有其自身的优点缺点,事实上,这些缺点(同时也是SOAP等系统固有的问题)正是REST开发实现的关键。 gRPCREST之间的一个关键区别是RPC定义其交互方式的协商机制。...换句话说,gRPC通常是用来驱动促进异构服务API之间的通信的终端系统。...但总的来说,延迟改进传输成本的降低使得使用gRPC的应用对于Bugsnag来说是一个巨大的成功。

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

使用Spring Boot设计实现REST API

REST端点用于集成应用程序或服务器端向客户端提供服务。在本文中,将介绍基于CRUD的SpringBoot来设计实现REST端点。...假设有一个客户数据,我将创建一个相应的Spring REST Controller来访问客户数据。为了简单起见,我将只关注控制器类而不是整个spring应用程序。...设计实施端点 端点应简短易用。例如,为了通过Id获取客户,我们可以使用/ customers / {id}这样的端点。...所有这些方法都有助于设计简单的REST端点,因为这是标准的,所以每个人都可以理解它们。 GET GET方法用于访问资源。要根据ID获取客户记录,我们可以使用/ customers / {id}等端点。...当客户端请求无效或不存在的“id”时,我们可以使用标准HTTP响应代码,而不是使用自定义正文或错误消息进行响应。HTTP响应代码是REST中用于通知处理状态的标准方式。

1.8K30

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

作为一名开发者,我很幸运能够在工作中使用一些仍然存在的SOAP服务。但是,我主要接触的是REST,这是一种基于资源的APIWeb服务开发架构风格。...在我的职业生涯中有很大一部分时间都参与了构建、设计使用API 的项目。我见过的大多数API 都“声称” 是 “符合REST原则”的——意味着遵循 REST 架构的原则和约束。..., 4xx 表示客户端错误 5xx 表示服务器错误 当然你还可以使用其他 HTTP 协议提供给 REST API 设计的功能 ,但这些都必须牢记在心里。...使用复数名词表示资源 我们应该使用 /book/:id/ (单数) 还是 /books/:id/ (复数)?我个人建议使用复数形式。为什么?因为它非常适合所有类型的端点。...、Browsers...)的 API 开发测试工具,支持 REST、Websocket、gRPC、TCP、UDP、SOAP等协议。

30840

为什么使用 Kubernetes?聚焦API,而非服务器

在这篇博客中,我将讨论如何通过专注于 KubernetesAPI 来释放其潜力,同时尽量避免可能遇到的复杂性。了解如何以及是否可以让 Kubernetes 为您发挥作用。...例如,可以决定在 Kubernetes 中运行这些函数,使用 Knative。但这需要先设置支持这些组件,而在这方面,云更容易上手。另外,无服务器以快速扩展缩放到零作为区别特征。...为什么以及如何 作为一个组织,重要的是要很好地理解为什么选择一个(技术)策略以及期望是什么。 如本博客文章的标题所示,明确回答“我们为什么使用 Kubernetes?”这个问题很重要。...考虑使用托管数据库,提供您需要的所有大小调整选项点时恢复。使用与S3兼容的对象存储来存储文件。使用SaaS进行可观测性,避免存储所有日志,指标追踪。...API 飞轮效应 当避开了地表以下的一些复杂性陷阱时,Kubernetes 提供的统一 API 工作方式就可以开始产生回报。让我们举个例子: 挑战: 我们有一个 Kubernetes 设置。

5810

Kubernetes 共存:强大的 API 使用管理

Kubernetes APIKubernetes 最强大的部分。它为你的基础设施应用程序提供可预测、可扩展的 API。可预测性来自精心设计的使用模式强大的稳定性。...API扩展 Kubernetes API 由不同的groups组成。...升级 Kubernetes 验证清单 你可以使用 kubectl 命令从正在运行的集群中获取 API版本的列表api-versions。...自定义资源 对于你创建的自定义资源,以下是处理升级弃用的方法。测试你的 CR 升级很重要,以确保你的控制器能够使用自定义资源以及 Kubernetes API版本正常运行。...了解你的资源使用的组版本是用户的责任,以确保他们的资源与当前的 Kubernetes API 兼容。 在许多情况下,资源可以被通过修改并存储为较新的资源,而无需任何用户操作。

56720

使用 Kotlin Spring Boot 2.0快速开发REST API接口 顶

完成工程目录结构的初始化工作 注意选择生成项目的构建工具,可以根据自己的编译习惯选择Maven或者Gradle,编程语言选择Kotlin,Spring Boot版本选择2.0.4或者以上版本,根据项目信息填写groupartifact...因为我们要用Spring5框架的响应式编程模式提供REST接口,第一个依赖包需要Reactive Web,另外我们需要用MongoDB保存接口数据,也是通过响应式访问MongoDB,还需要一个Reactive...使用IDE环境打开工程目录 可以使用STS或者IntelliJ IDEA,由于IntelliJ IDEA强大的辅助完成功能,个人强烈推荐后者。 ?...Date) 然后添加MongoDB的访问接口,该接口继承自ReactiveMongoRepository,已默认实现了数据搜索,保存,删除等基本方法,也可以根据自己的需要添加实现一些自定义方法,本例中仅使用到保存列表的方法就无需自定义方法了...添加REST API接口 凭借Kotlin优雅的DSL语言,我们可以更简洁的表达方式实现多个功能块的定义,如下部分是在beans内部添加WEB响应模块的bean: bean { val bookRepository

1.2K20

2019-05-31 使用 REST-Assured 测试 REST API 的进阶技巧最佳实践

各种针对 REST API 的测试工具也应运而生,《使用 Rest-Assured 测试 REST API》已进行了初步的介绍。...REST API 的测试有其自己的特点,虽然测试执行很快,很适合自动化测试,但是通常参数特别多,请求体返回体有时也很复杂。...从本质上说,REST API 的测试主要是测试 HTTP 的 GET/POST/DELETE/PUT 这几个方法。其中,最复杂的主要是 GET POST/PUT 两种情况。...它的安装简单的使用本文就不再赘述,请参考《使用 Rest-Assured 测试 REST API》。 我们首先看前面提到的第一个复杂点--验证返回体。JSON 返回体因为其结构简单,非常常用。...小结: 本文介绍了如何使用 Rest-Assured JSON Schema 测试 REST API 的方法及其他技巧。

1.7K20

为什么我们要改用gRPC

默认的选择似乎是通过HTTP发送JSON — 使用所谓的REST API,尽管大多数人不太重视REST原则。我们在fromAtoB就是这样开始的,但最近我们决定将gRPC作为我们的标准。...虽然它已经存在好几年了,但是我还没有在网上找到很多关于人们为什么使用或不使用它的信息,所以我决定写一篇文章来解释我们使用gRPC的原因。...gRPC的明显优势是它使用了一种高效的二进制编码,这使得它比JSON/HTTP更快。虽然速度更快总是受欢迎的,但是有两个方面对我们来说更重要:清晰的接口规范对流的支持。...double longitude = 2; } 使用这个文件,你可以使用protoc编译器生成客户机和服务器代码,并且可以开始编写提供或使用API的代码。 那么,为什么这是一件好事,而不是额外的工作?...https://kubernetes.io/blog/2018/11/07/grpc-load-balancing-on-kubernetes-without-tears/ 结论 尽管构建gRPC API

2.4K20

使用KubernetesAmbassador API Gateway部署Java应用程序

使用KubernetesAmbassador API Gateway部署Java应用程序 在本文中,您将学习如何将三个简单的Java服务部署到Kubernetes(通过新的Docker for Mac...我还向您展示了如何通过使用NodePort服务映射公开Kubernetes集群端口来向最终用户打开店面服务。虽然这对于演示来说很有用,但是很多人问你如何在API网关后面部署应用程序。...图1.使用Ambassador API Gateway部署的“Docker Java Shopping”应用程序 快速旁白:为什么使用API网关?...运行Kubernetes本机API网关还允许您将与部署维护网关相关的几个操作问题(例如实现弹性可伸缩性)卸载到Kubernetes本身。...与此密切相关,我也热衷于调查通过Kubernetes部署的Java应用程序。 您还可以通过文档阅读有关大使本身的更多详细信息,包括添加身份验证/安全性,gRPC支持TLS终止。

3.2K20

学习gRPC - 3.深入学习一个成熟的gRPC应用

在客户端 web 服务器之间使用 gRPC 的认同还没有到来。面向公众采用 gRPC 的进展缓慢的第二个原因是,使用特定的基于 gRPCAPI 的客户机需要访问服务器使用的相同模式定义。...与像 REST 这样使用 HTTP/1.1的 API 格式相比,必须共享一个共同的 protobuf 文件是一个重要的约束,并且需要客户端对 API 提供的数据结构没有预先知识。...使用 REST,只需调用 URL,然后以自描述数据格式(如 JSON、 XML 或 YAML)返回一些数据。 简而言之,gRPC 的复杂性使其难以适用于标准、商业网站公共 api。...在每个 Kubernetes 工作节点中运行的 kubelet 实例告诉 CRI 创建容器,以响应来自运行在 Kubernetes Controller 节点上的 API 服务器的通知 gRPC CRI...//用于使用 Kubernetes Container Runtime Interface 创建容器的 gRPC 函数消息类型 // CreateContainer creates a new container

78910

使用 Kubernetes 检查点 API 进行容器的备份恢复

Kubernetes v1.25 引入了容器检查点 API 作为 alpha 特性。这提供了一种在不停止容器的情况下备份恢复运行在 Pod 中的容器的方式。...此功能主要用于调试分析,但任何 Kubernetes 用户都可以利用常规备份恢复功能。 接下来,让我们来看看这个特性,并了解如何在我们的集群中启用它,并利用它进行备份恢复或调试分析。...为此,我们将需要一个支持容器检查点处理的 v1.25+ 版本的 Kubernetes集 群容器运行时环境。...总结 Kubernetes 的检查点功能是增强容器化应用程序容错性弹性的强大工具。通过实施良好规划的检查点策略,你可以将停机时间降至最低,改善资源利用情况,并简化应用程序迁移。...Kubernetes 检查点的最佳实践 定期创建检查点——根据应用程序的要求,定期创建检查点,以最小化在故障发生时的数据丢失。 监控管理资源——检查点功能可能消耗大量系统资源,尤其是内存。

47330

【性能】性能比较:REST vs gRPC vs 异步通信

本文比较了以下样式:RESTgRPC 使用消息代理 (RabbitMQ) 的异步通信,在微服务网络中了解它们对软件的性能影响。...因此,使用 gRPC AMQP 进行通信会导致较低的网络负载,而使用 REST API 时可以预期更高的网络负载。...连接处理 REST-API 通常建立在 HTTP/1.1 协议之上,而 gRPC 依赖于 HTTP/2 协议的使用。...这意味着可以将现有连接重用于使用异步或 gRPC 通信的后续请求。另一方面,使用 HTTP/1.1 的 REST-API 为与远程服务器的每个请求建立新连接。...这可以实现使用 REST API 的服务的水平扩展。Kubernetes 作为容器编排解决方案,无需任何调整即可对 HTTP/1.1 流量进行负载均衡。

1.3K30

我们为什么REST 转向 gRPC

默认的选项是通过 HTTP 发送 JSON,也就是所谓的 REST API。我们也是从 REST 开始的,但最近我们决定改用 gRPCgRPC是谷歌开发的一个远程调用框架,现在已开源。...尽管它已经出现了多年,但网上关于人们为什么要用它或者为什么不用它的信息并不多。于是,我决定写这篇文章分享一下我们为什么使用 gRPC。...那么,为什么说这个接口定义其实不算是额外的工作量反而是件好事?看看上面的代码,即使你之前从来没有使用gRPC 或者 Protocol Buffer,也能轻松读懂它。...Swagger/OpenAPI 当然,如果使用的是 JSON/HTTP,Swagger或者OpenAPI也提供了类似的东西。下面的例子与上述的 gRPC API 相当。...结论 尽管开发 gRPC API 在前期需要做更多的工作,但拥有清晰的 API 定义对流式传输的支持对我们来说更重要。在构建新的内部服务时,gRPC 将会是我们的首选。

1.6K60

7大维度看国外企业为啥选择gRPC打造高性能微服务

达到REST API设计的极限 现有系统传统上使用具有JSON有效载荷的REST API进行同步通信。...与REST over HTTP / 1.1相比,gRPC非常快速灵活。 gRPC的性能对于设置管道来处理仪表板发布的大量增加至关重要。...Netflix Ribbon是基于RPC调用使用REST的微服务通信框架的事实标准。今年,他们宣布,由于其多语言支持更好的可扩展性/可组合性,他们正在向gRPC过渡。...该框架最近也于2017年3月加入了CNCF基金会,支持重量级的KubernetesPrometheus。gRPC社区非常活跃,与开源gRPC生态系统 列出了许多gRPC激动人心的项目。...另外,gRPC有我们认同的原则 Lyft在转向gRPC方面做了大量的讨论,这与我们的经验非常相似:使用Protocol BuffersgRPC生成统一的API。值得一试。

1.2K40

在云中部署机器学习模型

在最简单的情况下,数据科学家提供的模型开发人员扩展的模型可以封装在Docker容器中,并通过REST api访问。Docker容器可以在Kubernetes或OpenWhisk等无服务器平台上运行。...为了使模型能够被多个应用程序开发人员访问,我们需要API管理。 REST api并不是公开模型的唯一方法。也许其他协议,比如gRPC或基于消息的系统,对于特定场景来说是更好的选择。...这些模型可以有不同的版本,可以通过REST api调用: IBM Model Asset Exchange中的模型可以轻松部署到Kubernetes。...它支持TensorFlow、Sklearn、RESTgRPC api等库。它可以用来学习深度学习。我尤其喜欢上面那种我称之为推理管道的能力。...例如,自从最近以来,TensorFlow服务还支持REST,而不仅仅是gRPC。 PipelineAI是一种实时企业人工智能平台,具有广阔的应用前景。

1K20
领券