小试GraphQL

之前做的需求,基本都是REST风格,以github提供的api为例,比较二者差异。试用GraphQL,找寻其独到之处

REST

REST

  • 一个URI代表一种资源

  • 通过HTTP动词对资源进行操作

创建一个仓库为例

GET,

PATCHDELETE类似


GraphQL

  • GraphQL的endpoint只有一个

  • 所有请求都是POST

可以在 Exploer左边写查询,右边显示结果。

查询当前登录的用户名:

查询Go项目当前的star数:

GraphQL的endpoint只有一个,即

https://api.github.com/graphql

使用Postman:

使用querymutation来区分是查询还是修改

二者区别

  • REST一个URI就是一个资源,GraphQL只有一个URI

  • REST返回所有的内容,response体积较大,GraphQL可以只返回需要的数据,返回值体积小

GraphQL是一种语言,有自己的语法和类型系统

会有错误提示~

GraphQL的优势:

  • 取你所需要的数据,不多也不少

n+1问题

  • nesting(嵌套查询)

比如想取一个pr的commits、comment、reviews,用REST需要请求四次,然后还需要对返回值进行组装;而用GraphQL则只需要一次请求,拿到的就是需要的数据

资源孤岛 (REST) vs Graph(GraphQL)

graphql-voyager

  • 强类型(每一个GraphQL的请求发到服务端之后,服务端都会进行校验,不通过会报错)

Migrating from REST to GraphQL


参考:

为什么GraphQL比REST好用?

相关推荐
董员外1 小时前
RAG 系统进化论(七):Multimodal RAG(多模态 RAG),当知识存在于表格、图片和页面中
人工智能·后端·设计模式
用户667675093791 小时前
Java 是如何操作Redis的?从 Spring Data Redis中RedisTemplate 源码分析 ZSet 调用链
后端
凌虚2 小时前
Kubernetes 编年史:从 Borg 到云原生操作系统
后端·程序员·kubernetes
计算机魔术师3 小时前
传统基础架构 - 单体
后端
SelectDB3 小时前
金城银行基于 Apache Doris 构建实时数据平台:T+1 到分钟级的金融级实践
后端
Csvn3 小时前
📊 SQL 入门 Day 13:窗口函数进阶
后端·sql
卷无止境3 小时前
拯救乱码方块:pandas 绘图中文字体的一揽子解决方案
后端·python
SelectDB3 小时前
Apache Doris 4.1:面向 AI & Search 的统一数据底座怎么选?向量检索 + 全文搜索 + 100MB JSON 完整能力拆解
后端
lichenyang4533 小时前
从图片生成任务到用户隔离:AIGC Creative Studio 后端与 PostgreSQL 建模实践
前端·后端
Zane19943 小时前
别再手写 try/finally 了:一文讲透 with 语句背后的上下文管理器协议
后端·python