🚀 REST API 还是 ✈️ GraphQL ❓

前言

说到 API 设计,GraphQLRESTful API 是当前最主流的两种选择,各自有其独特优势与挑战。

有幸的是,我上家公司的时候,使用的就是 GraphQL,而在上上家使用的是 RESTful API

今天我就结合我的经验,来聊聊到底该如何选择!

往期精彩推荐

正文

GraphQL 优劣势

GraphQLFacebook 推出的声明式查询语言,它的最大优势在于灵活和高效。

你只需要请求自己需要的字段,减少冗余数据传输,可以很大程度上优化性能。

另外,相比 REST 的多次接口调用,GraphQL 支持聚合请求,有效减少 HTTP 请求次数。

还有个好处是,它通过 Schema 统一前后端对接口结构的认知,配合类型提示、Mock 能力,大大提升开发体验。

比如借助代码生成工具 ApolloRelay,可以自动生成对应的查询代码!

最后,天然支持 Subscription,适用于聊天、通知等实时性强的业务场景!

当然,它的劣势也很明显:

不像 REST 可以使用 HTTP 缓存,GraphQL 的缓存需要借助 Apollo 等第三方库维护!

前面提到,虽然可以聚合请求,但是所有请求集中在一个端点,可能会成为系统瓶颈,尤其在高并发场景下!

RESTful API 优劣势

RESTful API 是目前最广泛使用的接口规范,基于 HTTP 协议,使用资源路径和请求方法组合完成数据操作。

它的设计清晰直观,GET/POST/PUT/DELETE 等操作语义明确。

而且生态成熟,社区和工具链完善,日志、监控、安全机制等配套方案多。

最重要的是支持 HTTP 缓存机制,天然支持浏览器或中间层缓存,提升接口性能!

而且通过 Postmancurl 等工具即可快速测试和验证接口。

Apifox Swagger Postman

但它也存在一些问题:

比如,请求冗余,无法控制字段粒度,常常返回大量用不到的数据!

多端聚合困难,遇到复杂业务需要多次请求多个接口,增加开发成本。

还有就是扩展性不如 GraphQL,对于需要动态字段、自定义响应结构的场景,REST 显得不够灵活!

最后

GraphQLREST 各有千秋,关键在于选择适合自己团队和项目的方案。小团队、简单业务选 REST,快准稳;复杂系统、多端协作选 GraphQL,灵活高效。不被技术趋势绑架,做最合适的技术决策,才是架构的本质。

今天的分享就这些了,感谢大家的阅读,如果文章中存在错误的地方欢迎指正!

往期精彩推荐

相关推荐
知识分享小能手40 分钟前
uni-app 入门学习教程,从入门到精通,uni-app基础扩展 —— 详细知识点与案例(3)
vue.js·学习·ui·微信小程序·小程序·uni-app·编程
demi_meng2 小时前
reactNative 遇到的问题记录
javascript·react native·react.js
MC丶科2 小时前
【SpringBoot 快速上手实战系列】5 分钟用 Spring Boot 搭建一个用户管理系统(含前后端分离)!新手也能一次跑通!
java·vue.js·spring boot·后端
千码君20162 小时前
React Native:从react的解构看编程众多语言中的解构
java·javascript·python·react native·react.js·解包·解构
lijun_xiao20094 小时前
前端最新Vue2+Vue3基础入门到实战项目全套教程
前端
90后的晨仔4 小时前
Pinia 状态管理原理与实战全解析
前端·vue.js
杰克尼5 小时前
JavaWeb_p165部门管理
java·开发语言·前端
90后的晨仔5 小时前
Vue3 状态管理完全指南:从响应式 API 到 Pinia
前端·vue.js
90后的晨仔5 小时前
Vue 内置组件全解析:提升开发效率的五大神器
前端·vue.js
我胡为喜呀5 小时前
Vue3 中的 watch 和 watchEffect:如何优雅地监听数据变化
前端·javascript·vue.js