名词百科

什么是 RESTful / GraphQL?

一句话定义

RESTful 是一种以资源为中心的接口设计风格,用 HTTP 方法与状态码表达操作;GraphQL 是一种查询语言,由客户端声明需要哪些字段,服务端一次返回。

发布者:黔序科技

它到底是什么

两者的分歧在谁决定返回什么。REST 由服务端定义好每个接口返回的固定结构,客户端只能用;GraphQL 由客户端写查询,服务端按需组装。

REST 的优势是简单、可缓存、易于理解和调试;GraphQL 的优势是减少请求次数与冗余字段,适合页面需要聚合多种数据的场景。

怎么运作的

REST:资源用路径表示(/orders/123),操作由 HTTP 方法表达(GET 查询、POST 创建、PUT 更新、DELETE 删除)。状态码表达结果(200 成功、201 已创建、400 参数错、401 未授权、404 不存在、500 服务错)。

GraphQL:单一入口,请求体里写查询语句,声明需要的字段与嵌套关系。服务端按 schema 校验并返回。支持一次取多个资源,也支持只取部分字段。

取舍:接口数量少、调用方单一,REST 更省事;多端(Web、App、小程序)需要的字段各不相同,GraphQL 能显著减少接口数量。但 GraphQL 的缓存与权限控制比 REST 复杂。

容易混的几个概念

  • RPC:以动作为中心(如 createOrder),与 REST 的资源中心思路不同。
  • gRPC:基于二进制的 RPC 框架,性能高,多用于服务间调用。
  • SOAP:早期的 XML 协议,结构重,仍在部分传统系统中使用。
  • OpenAPI:描述 REST 接口的文档规范,与设计风格无关。

常见问题

RESTful 是强制标准吗?

不是,是一种约定俗成的风格。实际项目中常见「半 REST」:路径按资源组织,但用了 RPC 式的动作路径。关键是团队内部一致,而不是教条。

GraphQL 适合所有项目吗?

不适合。它的收益在多端字段需求差异大时最明显;单一客户端的内部系统用 GraphQL 会增加复杂度而无明显收益。权限与限流也需额外设计。

E 后端架构 · 同组词条

APIAPI(Application Programming Interface,应用程序编程接口)是系统之间约定好的调用方式:调用方按约定传入参数,服务方返回结果。它是软件之间协作的接口。数据库数据库是结构化存储与管理数据的系统。MySQL 是关系型数据库,用表与行组织数据、支持事务;Redis 是键值型内存数据库,常用于缓存、计数与队列。前端前端是用户直接看到并操作的界面部分,运行在浏览器或客户端中;后端是运行在服务器上的业务逻辑与数据存取部分。两者通过接口通信。缓存缓存是把访问频繁的数据临时存放在更快的存储介质中,以减少对慢速数据源的访问。常见位置有浏览器、CDN、应用内存、Redis。消息队列消息队列是用于在系统之间异步传递消息的中间件:生产者发送消息,消费者按自己的节奏处理。它解决的是解耦、削峰与异步三个问题。微服务微服务架构是把一个应用拆成多个独立部署、独立运行的小服务,各自负责一块业务能力,通过接口或消息通信。每个服务可单独开发、发布和扩容。业务中台业务中台是把多个业务线共用的能力(用户、商品、订单、支付、营销)抽取成统一服务,供各业务线调用的架构思路。它强调的是能力复用,而不是技术统一。多租户多租户架构是一套系统同时服务多个客户(租户),各租户的数据相互隔离、配置互不影响。它是 SaaS 能把成本压低的根本原因。